RSA 是一种非对称加密算法,使用公钥加密数据,私钥解密数据,安全性较高,常用于前端和后端之间的数据安全传输。以下分别从前端和后端的角度介绍 RSA 加密解密的实现,前端使用 JavaScript 结合 jsencrypt
库,后端以 Python 结合 cryptography
库为例。
首先,安装 jsencrypt
:
npm install jsencrypt -S
# 或者
npm i jsencrypt -S
然后,使用以下代码进行 RSA 加密:
// 导入jsencrypt
import JSEncrypt from 'jsencrypt/bin/jsencrypt';// 公钥示例,实际使用时应从后端获取
const publicKey = `-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDFY527d7z55J1K7a6G8m6n2c9c
W3k8v5h4b3j6z7q5g3w4r6e7y8u2t3y7e4a6b7c8d9f0g1h2i3j4k5l6m7n8o9p0q
-----END PUBLIC KEY-----`;// 创建加密实例
const encrypt = new JSEncrypt();
// 设置公钥
encrypt.setPublicKey(publicKey);// 要加密的数据
const originalData = "Hello, RSA encryption!";
// 加密数据
const encryptedData = encrypt.encrypt(originalData);
console.log("加密后的数据: ", encryptedData);
前后端交互流程
- 后端生成密钥对:后端使用
cryptography
库生成 RSA 公钥和私钥。 - 后端传递公钥给前端:后端将公钥以 PEM 格式发送给前端。
- 前端加密数据:前端使用
jsencrypt
库,接收公钥后对要传输的数据进行加密。 - 前端发送加密数据给后端:前端将加密后的数据发送给后端。
- 后端解密数据:后端使用私钥对接收的加密数据进行解密。