RSA加密(可逆)

RSA加密:

RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。

非对称加密算法:

非对称加密算法需要两个密钥:

  • 公开密钥(publickey: 简称公钥)

  • 私有密钥(privatekey: 简称私钥)

  • 公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。

注意:

  • 使用时都是使用公匙加密使用私匙解密。公匙可以公开,私匙自己保留。

  • 算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,而使得加密解密速度没有对称加密解密的速度快。

使用流程和场景介绍

通过公匙加密,使用私匙解密。私匙是通过公匙计算生成的。假设ABC三方之间相互要进行加密通信。大家相互之间使用公匙进行信息加密,信息读取时使用各自对应的私匙进行信息解密

用户输入的支付密码会通过RSA加密

公钥私钥生成方式:

公私匙可以在线生成 http://web.chacuo.net/netrsakeypairarrow-up-right

环境安装:npm install jsencrypt

代码实现

JS代码示例:

默认 JSEncrypt 使用 Base64 编码,无法直接处理 UTF-8 中文字符。 如果加密 UTF-8 字符(如中文),解密后可能乱码。

加密前先将 UTF-8 文本转换为 Base64(确保字符完整)。 解密后再将 Base64 转换回 UTF-8。

改进版本(支持 UTF-8)

Python代码示例:

1.创建公钥和私钥

2.加密算法实现

3.解密算法实现

上述代码提取关键字:

  • RSA

  • setPublicKey(设置公钥)

  • setPrivateKey(设置私钥)

  • encrypt,decrypt

Last updated