iOS加密相关算法框架:CommonCrypto
1、对称加密:DES、3DES、AES
● 加密和解密使用同一个密钥。
● 加密解密过程:
明文 --> 密钥 --> 密文,
密文 --> 密钥 --> 明文。
● 优点:算法公开、计算量少、加密速度快、加密效率高、适合大批量数据加密;
● 缺点:双方使用相同的密钥,密钥传输的过程不安全,容易破解,因此为了保密其密钥需要经常更换。
AES:AES 又称高级加密标准,是下一代的加密算法标准,支持128、192、256位密钥的加密,加密和解密的密钥都是同一个。OS 一般使用 ECB 模式,16字节128位密钥。
AES算法主要包括三个方面:轮变化、圈数、密钥扩展。
● 优点:高性能、灵活易用、安全级别高。
● 缺点:加密与解密的密钥相同,所以前后端利用 AES 进行加密的话,如何安全保存密钥就是成了一个问题。
DES:数据加密标准, DES 算法的入口参数有三个:Key、Data、Mode。
● 其中 Key 为7个字节共56位,是 DES 算法的工作密钥; Data 为8个字节64位,是要被加密或者被解密的数据; Mode 为 DES 的工作方式,有两种:加密,解密。
● 缺点:与 AES 相比,安全性较低。
3DES:3DES 是 DES 加密算法的一种模式,它使用3条64位的密钥对数据进行三次加密,是 DES 向 AES 度过的加密算法,是 DES 的一个更安全的变形。它以 DES 为基本模式,通过组合分组方式设计出分组加密算法。
2、非对称加密:RSA 加密
● 非对称加密算法需要成对出现的两个密钥,公开密钥(public key)和私有密钥(private key)。
● 加密解密过程:对于一个私钥,有且只有一个与之对应的公钥。生成者负责生成私钥和公钥,并保存私钥,公开公钥。
公钥加密,私钥解密;或者私钥数字签名,公钥验证。公钥和私钥是成对的,它们相互解密。
● 特点:
1. 对信息保密,防止中间人攻击 : 将文明通过接收人的公钥加密,传输给接收人,因为只有接收人拥有对应的私钥,别人不可能拥有或者不可能通过公钥推算出私钥,所以传输过程中无法被中间人截获。只有拥有私钥的接收人才能阅读。此方法通常用于交换对称密钥。
2.身份验证和防止篡改:权限狗自己的私钥加密一段授权明文,并将授权明文和加密后的密文,以及公钥一并发送出来,接受方只需要通过公钥将密文解密后与授权明文对比是否一致,就可以判断明文在中途是否被篡改过。此方法用于数字签名。
● 优点:加密强度小,加密时间长,常用于数字签名和加密秘钥、安全性非常高、解决了对称加密保存密钥的安全问题。
● 缺点:加密解密速度远慢于对称加密,不适合大批量数据加密。
3、哈希算法加密:MD5 加密、.SHA 加密、HMA C 加密
● 哈希算法加密是通过哈希算法对数据加密,加密后的结果不可逆,即加密后不能再加密。
● 特点:不可逆、算法公开、相同数据加密结果一致
● 作用:信息摘要,信息“指纹”,用来做数据识别的。如:用户密码加密、文件效验、数字签名、鉴权协议。
MD5 加密:对不同的数据加密的结果都是定长的32位字符。
.SHA 加密:安全哈希算法,主要适用于数字签名标准(DSS)里面定义的数字签名算法(DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这个时候就会产生不同的消息摘要。当然除了 SHA1 还有 SHA256 以及 SHA512 等。
HMAC 加密:给定一个密钥,对明文加密,做两次”散列“,得到的结果还是32位字符串。
4、Base64 加密
● 一种编码方式,严格意义上来说不算加密算法。起作用就是将二进制数据编码成文本,方便网络传输。
● 用 base64 编码之后,数据长度会变大,增加了大约1/3,但是好处是编码后的数据可以直接在邮件和网页中显示;
● 当然 base64 可以作为加密,但是 base64 能够逆运算,非常不安全!
● base64 编码有个非常显著的特点,末尾有个”=“号。
● 原理:
1). 将所有字符串转化为 ASCII 编码;
2). 将 ASCII 编码转化为8位二进制;
3). 将二进制三位一组不足补0,共24位,再拆分成6位一组共四组;
4). 统一在6位二进制前补两个0到8位;
5). 将补0后的二进制转为十进制;
6). 最后从 Base64 编码表获取十进制对应的 Base64 编码。