iOS RSA 、DES、MD5三种加密方式结合使用
概念解释:
- 对称加密:
需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密.
优点:
对称加密算法的优点是算法公开、计算量小、加密速度快、加密效率高。
缺点:
在数据传送前,发送方和接收方必须商定好秘钥,然后使双方都能保存好秘钥。其次如果一方的秘钥被泄露,那么加密信息也就不安全了.
- 非对称加密:
非对称加密算法需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
优点:
与对称加密相比,其安全性更好:对称加密的通信双方使用相同的秘钥,如果一方的秘钥遭泄露,那么整个通信就会被破解。而非对称加密使用一对秘钥,一个用来加密,一个用来解密,而且公钥是公开的,秘钥是自己保存的,不需要像对称加密那样在通信之前要先同步秘钥。
缺点:
非对称加密的缺点是加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
MD5:
- 加密后不可逆(只能加密不可解密),我们用于加密用户的登录密码;
DES:
- 对称加密(服务器和客户端公用同一个秘钥),缺点:一旦被抓包破解了秘钥,就能破解所有的传递信息;
RSA:
- 非对称加密(会生成一对秘钥(公钥和私钥)), 通过MAC终端生成两个.pem文件,cat文件,获取里面的字符串(也就是秘钥);
MAC上生成公钥、私钥的方法,及使用:
-
打开终端,选择一个文件夹目录;
-
输入指令:
openssl
;
openssl是生成各种秘钥的工具,mac已经嵌入;
-
输入指令:
genrsa -out rsa_private_key.pem 1024
(生成私钥,服务端使用); -
输入指令:
rsa -in rsa_private_key.pem -out rsa_public_key.pem -pubout
(生成公钥); -
输入指令:
pkcs8 -topk8 -in rsa_private_key.pem -out pkcs8_rsa_private_key.pem -nocrypt
(私钥转格式,在ios端用这个私钥测试解密过程) ;
应用场景:
-
通过简单的URLENCODE + BASE64编码防止数据明文传输;
-
对普通请求、返回数据,生成MD5校验(MD5中加入动态密钥),进行数据完整性(简单防篡改,安全性较低,优点:快速)校验;
-
对于重要数据,使用RSA进行数字签名,起到防篡改作;
-
对于比较敏感的数据,如用户信息(登陆、注册等),客户端发送使用RSA加密,服务器返回使用DES(AES)加密;
客户端发送之所以使用RSA加密,是因为RSA解密需要知道服务器私钥,而服务器私钥一般盗取难度较大;如果使用DES的话,可以通过破解客户端获取密钥,安全性较低。而服务器返回之所以使用DES,是因为不管使用DES还是RSA,密钥(或私钥)都存储在客户端,都存在被破解的风险,因此,需要采用动态密钥,而RSA的密钥生成比较复杂,不太适合动态密钥,并且RSA速度相对较慢,所以选用DES)
总结:
- 密码加密用MD5,信息传递用RSA + DES
首先移动端给服务器传递通过RSA公钥加密后的数据,参数包括DES的密钥(密钥是随机生成的八位字符串) 和 相关参数信息,服务器通过私钥解密信息数据,里面包括DES密钥和 相关参数信息,服务器再通过此DES密钥加密返回数据给移动端,移动端通过此DES密钥进行解密获取数据。优点:因为RSA不容易解密,即使被拦截解密了,获取了DES的密钥,因为DES的密钥是随机生成的,也只能解密这一次的数据信息,不会对其他数据信息产生影响。(注:DES的密钥每一次都要重新随机生成,也就是一个密钥只完成这一次的数据传递)
(未完待续......)