MD5
MD5的全称是Message-DigestAlgorithm 5,Message-Digest泛指字节串(Message)的Hash变换,就是把一个任意长度的字节串变换成一定长的大整数。请注意我使用了"字节串"而不是"字符串"这个词,是因为这种变换只与字节的值有关,与字符集或编码方式无关。 MD5将任意长度的"字节串"变换成一个128bit的大整数,并且它是一个不可逆的字符串变换算法,换句话说就是,即使你看到源程序和算法描述,也无法将一个MD5的值变换回原始的字符串,从数学原理上说,是因为原始的字符串有无穷多个,这有点象不存在反函数的数学函数。
使用:需要导入第三方框架: NSString+Hash
用途:MD5广泛用于加密和解密技术上,用户Login的时候,系统是把用户输入的密码计算成MD5值,然后再去和系统中保存的MD5值进行比较,而系统并不"知道"用户的密码是什么。
base64
base64 编码是现代密码学的基础,Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。
1.原本是 8个bit 一组表示数据,改为 6个bit一组表示数据,不足的部分补零,每 两个0 用 一个 = 表示
2.用base64 编码之后,数据长度会变大,增加了大约 1/3 左右.(8-6)/6
SSKeyChain钥匙串
我们将用户的账号信息保存到钥匙串中能保证数据安全的原因是因为只有苹果公司才知道钥匙串保存在内存中的哪个位置。
钥匙串访问的第三方框架SSKeychain
简单使用:
参数介绍
Password :需要存储的密码信息.
Service :用来标识 app ,app的唯一标识符.
account :账户信息,当前密码所对应的账号.
非对称加密
常见的公钥加密算法有:RSA、ElGamal、背包算法、Rabin(RSA的特例)、迪菲-赫尔曼密钥交换协议中的公钥加密算法、椭圆曲线加密算法(英语:Elliptic Curve Cryptography, ECC)。使用最广泛的是RSA算法(由发明者Rivest、Shmir和Adleman姓氏首字母缩写而来)是著名的公开秘钥加密算法。
RSA简要步骤
RSA使用"秘匙对"对数据进行加密解密.在加密解密数据前,需要先生成公钥(public key)和私钥(private key).
公钥(public key): 用于加密数据. 用于公开, 一般存放在数据提供方, 例如iOS客户端.
私钥(private key): 用于解密数据. 必须保密, 私钥泄露会造成安全问题.
1.生成1024位私钥 openssl genrsa -out private_key.pem 1024
2.根据私钥生成CSR文件 openssl req -new -key private_key.pem -out rsaCertReq.csr
3.根据私钥和CSR文件生成crt文件 openssl x509 -req -days 3650 -in rsaCertReq.csr -signkey private_key.pem -out rsaCert.crt
4.为IOS端生成公钥der文件 openssl x509 -outform der -in rsaCert.crt -out public_key.der
5.将私钥导出为这p12文件 openssl pkcs12 -export -out private_key.p12 -inkey private_key.pem -in rsaCert.crt