jsrsasign js实现
使用 jsrsasign 实现 RSA 加密解密
jsrsasign 是一个纯 JavaScript 库,用于 RSA、ECDSA 等加密算法的实现。以下是基本使用方法:
安装 jsrsasign
通过 npm 安装:
npm install jsrsasign
或直接引入 CDN:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsrsasign/10.5.25/jsrsasign-all-min.js"></script>
生成 RSA 密钥对
const { KEYUTIL, KJUR } = require('jsrsasign');
// 生成 RSA 密钥对
const keyPair = KEYUTIL.generateKeypair('RSA', 2048);
const privateKey = KEYUTIL.getPEM(keyPair.prvKeyObj, 'PKCS8PRV');
const publicKey = KEYUTIL.getPEM(keyPair.pubKeyObj);
RSA 加密数据
const { KJUR, KEYUTIL } = require('jsrsasign');
// 使用公钥加密
const publicKey = '-----BEGIN PUBLIC KEY...'; // 替换为实际公钥
const rsaPubKey = KEYUTIL.getKey(publicKey);
const encrypted = KJUR.crypto.Cipher.encrypt('Hello World', rsaPubKey);
console.log('Encrypted:', encrypted);
RSA 解密数据
const { KJUR, KEYUTIL } = require('jsrsasign');
// 使用私钥解密
const privateKey = '-----BEGIN PRIVATE KEY...'; // 替换为实际私钥
const rsaPrvKey = KEYUTIL.getKey(privateKey);
const decrypted = KJUR.crypto.Cipher.decrypt(encrypted, rsaPrvKey);
console.log('Decrypted:', decrypted);
签名和验证
生成签名:
const sig = new KJUR.crypto.Signature({ alg: 'SHA256withRSA' });
sig.init(privateKey);
sig.updateString('data to sign');
const signature = sig.sign();
验证签名:
const sigV = new KJUR.crypto.Signature({ alg: 'SHA256withRSA' });
sigV.init(publicKey);
sigV.updateString('data to sign');
const isValid = sigV.verify(signature);
使用 jsrsasign 处理 PEM 格式密钥
从 PEM 字符串获取密钥对象:
const prvKeyObj = KEYUTIL.getKey('-----BEGIN PRIVATE KEY...');
const pubKeyObj = KEYUTIL.getKey('-----BEGIN PUBLIC KEY...');
将密钥对象转为 PEM 格式:

const prvKeyPEM = KEYUTIL.getPEM(prvKeyObj, 'PKCS8PRV');
const pubKeyPEM = KEYUTIL.getPEM(pubKeyObj);
注意事项
- RSA 加密有长度限制,加密长数据需分段处理
- 实际应用中应妥善保管私钥
- 生产环境建议使用 2048 位或更长的密钥
- 加密敏感数据时配合使用对称加密算法更安全
以上代码展示了 jsrsasign 库的基本 RSA 操作,实际应用中需要根据具体场景调整实现方式。






