jsrsasign js实现
以下是关于使用 jsrsasign 库在 JavaScript 中实现加密、签名等功能的详细方法:
安装与引入
通过 npm 安装 jsrsasign:
npm install jsrsasign
在代码中引入:
const jsrsasign = require("jsrsasign");
// 或 ES6 导入
import { KJUR, hextob64, b64tohex } from "jsrsasign";
生成密钥对
使用 RSAKey 生成 RSA 密钥对:

const key = new jsrsasign.RSAKey();
key.generate(2048, "10001"); // 2048位密钥,公共指数 10001 (0x10001)
const pubKey = key.getPublicKey(); // PEM 格式公钥
const prvKey = key.getPrivateKey(); // PEM 格式私钥
数字签名与验证
使用私钥签名数据:
const sig = new jsrsasign.KJUR.crypto.Signature({ alg: "SHA256withRSA" });
sig.init(prvKey);
sig.updateString("待签名的数据");
const signature = sig.sign(); // 返回 Base64 编码的签名
使用公钥验证签名:
const sigV = new jsrsasign.KJUR.crypto.Signature({ alg: "SHA256withRSA" });
sigV.init(pubKey);
sigV.updateString("待验证的数据");
const isValid = sigV.verify(signature); // 返回布尔值
加密与解密
RSA 加密(通常用于加密对称密钥):

const cipher = new jsrsasign.KJUR.crypto.Cipher({ alg: "RSA", oid: "1.2.840.113549.1.1.1" });
cipher.init(pubKey);
const encrypted = cipher.encrypt("待加密数据"); // 返回 Base64 密文
RSA 解密:
const cipher = new jsrsasign.KJUR.crypto.Cipher({ alg: "RSA", oid: "1.2.840.113549.1.1.1" });
cipher.init(prvKey);
const decrypted = cipher.decrypt(encrypted); // 返回解密后的字符串
处理证书
解析 X.509 证书:
const cert = new jsrsasign.X509();
cert.readCertPEM("-----BEGIN CERTIFICATE-----..."); // PEM 格式证书
const subject = cert.getSubjectString(); // 获取主题信息
const issuer = cert.getIssuerString(); // 获取颁发者信息
哈希计算
计算数据的哈希值:
const hash = jsrsasign.KJUR.crypto.Util.hashString("SHA256", "待哈希数据");
console.log(jsrsasign.KJUR.crypto.Util.hexToBase64(hash)); // 输出 Base64 哈希值
注意事项
- 密钥长度建议至少 2048 位以保证安全性。
- 直接使用 RSA 加密大数据时性能较差,建议结合 AES 等对称加密方案。
- 处理敏感数据时确保密钥安全存储。
以上方法覆盖了 jsrsasign 的常见使用场景,适用于数字签名、加密解密、证书处理等需求。






