【加密算法】RSA和AES在项目中的使用

  • 对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信的安全性至关重要。
  • 非对称加密算法需要两个密钥:公开密钥(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解密,获得数据

参考:

1,RSA在项目中使用 – Heart.Think.Do

2,聊一聊,前端常见的加密算法-51CTO.COM

3,jsencrypt加密用法 - 知乎

猜你喜欢

转载自blog.csdn.net/u013517229/article/details/127792763