jsrsasign+js实现
使用 jsrsasign 实现 RSA 加密/解密
jsrsasign 是一个纯 JavaScript 实现的加密库,支持 RSA、ECDSA 等加密算法。以下是在 JavaScript 中使用 jsrsasign 实现 RSA 加密和解密的示例代码。
安装 jsrsasign:
npm install jsrsasign
生成 RSA 密钥对
const jsrsasign = require("jsrsasign");
// 生成 RSA 密钥对
const keyPair = jsrsasign.KEYUTIL.generateKeypair("RSA", 2048);
const privateKey = jsrsasign.KEYUTIL.getPEM(keyPair.prvKeyObj, "PKCS8PRV");
const publicKey = jsrsasign.KEYUTIL.getPEM(keyPair.pubKeyObj);
RSA 加密
const jsrsasign = require("jsrsasign");
// 要加密的数据
const plainText = "Hello, RSA!";
// 加载公钥
const publicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu1SU1LfVLPHCozMxH2Mo
4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0/IzW7yWR7QkrmBL7jTKEn5u
...
-----END PUBLIC KEY-----`;
// 使用 RSA 加密
const encrypted = jsrsasign.KJUR.crypto.Cipher.encrypt(
plainText,
jsrsasign.KEYUTIL.getKey(publicKey),
"RSA"
);
console.log("加密结果:", encrypted);
RSA 解密
const jsrsasign = require("jsrsasign");
// 加密后的数据
const encryptedData = "..."; // 替换为实际的加密数据
// 加载私钥
const privateKey = `-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC7VJTUt9Us8cKj
MzEfYyjiWA4R4/M2bS1GB4t7NXp98C3SC6dVMvDuictGeurT8jNbvJZHtCSuYEvu
...
-----END PRIVATE KEY-----`;
// 使用 RSA 解密
const decrypted = jsrsasign.KJUR.crypto.Cipher.decrypt(
encryptedData,
jsrsasign.KEYUTIL.getKey(privateKey),
"RSA"
);
console.log("解密结果:", decrypted);
签名和验证
const jsrsasign = require("jsrsasign");
// 要签名的数据
const message = "Important message";
// 生成签名
const signature = new jsrsasign.KJUR.crypto.Signature({ alg: "SHA256withRSA" });
signature.init(privateKey);
signature.updateString(message);
const sigValue = signature.sign();
// 验证签名
const verifier = new jsrsasign.KJUR.crypto.Signature({ alg: "SHA256withRSA" });
verifier.init(publicKey);
verifier.updateString(message);
const isValid = verifier.verify(sigValue);
console.log("签名验证结果:", isValid);
注意事项
- RSA 加密有长度限制,通常不能超过密钥长度减去一定的填充字节
- 对于大数据加密,建议使用对称加密(如 AES)加密数据,再用 RSA 加密对称密钥
- 密钥长度建议至少 2048 位以保证安全性
- 私钥必须妥善保管,避免泄露
以上代码展示了 jsrsasign 库中 RSA 的基本用法,包括密钥生成、加密解密和签名验证功能。







