常用加密方式
-
哈希(散列)函数:MD5、SHA
MD5特点:
1.任何输入的信息都能得到32位的字符串
2.加密结果不可逆(无法还原)
3.对相同的数据加密结果都是一样的
缺点:不安全,可通过穷举反推加密结果。MD5解密网站
优点:如果是上传文件,把文件data用md5加密后,传递到服务端可判断是否已存在,直接秒传。服务端只保留一份数据。升级版:在明文固定位置加入足够复杂的字符串,再进行MD5加密
缺点:字符串是固定不变的,也易破解
NSString *paramsString = @"a=1&b=2....";
NSString *keyString = @"shiflksjdhfklasjdflaskjdfksj";
NSString *md5String = [[NSString stringWithFormat:@"%@%@",paramsString,keyString] md5];
- 对称加密:DES、3DES、AES等
用同一套密钥来进行加密解密
即:明文 -> 加密(A)-> 密文
密文 -> 解密(A)-> 明文
优点:算法公开,计算量小,加密效率高
缺点:密钥易泄露,不安全
image.png
- 非对称加密:RSA、Elgamal等,RSA使用最广泛
指加密和解密使用不同密钥的加密算法,公开密钥(简称公钥)和私有密钥(简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。
工作原理:
1.A要向B发送信息,A和B都要产生一对用于加密和解密的公钥和私钥(有2对密钥)
2.A的私钥保密,A的公钥告诉B;B的私钥保密,B的公钥告诉A。
3.A要给B发送信息时,A用B的公钥加密信息,因为A知道B的公钥。
4.A将这个消息发给B(已经用B的公钥加密消息)。
5.B收到这个消息后,B用自己的私钥解密A的消息。其他所有收到这个报文的人都无法解密,因为只有B才有B的私钥。
image.png