- 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
- 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
AES:高级加密标准(Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。
RSA 加密算法是非对称加密算法最常见的一种。
使用场景1:只使用RSA加密
我们在登录系统时,需要输入密码。密码不能明文传输,所有要在客户端对密码加密,在服务端对密码进行解密。那么我们可以在服务端保存公钥和私钥,并把私钥告诉客户端。客户端用公钥加密,在服务端用私钥解密。
使用场景2:RSA和AES同时使用
除了客户端发送信息要加密外,服务端返回数据也要加密。比如返回数据中包含身份证,电话号码等敏感信息,如果明文传输存在泄密的风险。客户端要解密必须使用私钥,如果只使用RSA加密解密,那么私钥就要保存在客户端,很容易泄密。所以要将RSA和AES同时使用。
客户端:
客户端生成一个16byte的key;
使用这个key对用户密码进行AES加密
对key使用RSA进行加密
将RSA加密的key和AES加密的密码信息传给服务器
注:就算截取了加密后的key也没有用,因为没有RSA私钥,无法解密
服务端:
通过RSA私钥对key解密
ASE使用这个key对密码进行解密
通过key用AES加密数据,并返回给客户端
客户端:
客户端通过key用AES解密,获得数据
参考: