当前位置:首页 > JavaScript

jsrsasign+js实现

2026-02-03 07:12:35JavaScript

使用 jsrsasign 实现 RSA 加密/解密

jsrsasign 是一个纯 JavaScript 实现的加密库,支持 RSA、ECDSA 等加密算法。以下是在 JavaScript 中使用 jsrsasign 实现 RSA 加密和解密的示例代码。

安装 jsrsasign:

jsrsasign+js实现

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 的基本用法,包括密钥生成、加密解密和签名验证功能。

标签: jsrsasignjs
分享给朋友:

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas i…

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…