当前位置:首页 > JavaScript

jsrsasign js实现

2026-04-05 07:54:48JavaScript

使用 jsrsasign 实现 RSA 加密解密

jsrsasign 是一个纯 JavaScript 库,用于 RSA、ECDSA 等加密算法的实现。以下是基本使用方法:

安装 jsrsasign

通过 npm 安装:

npm install jsrsasign

或直接引入 CDN:

jsrsasign js实现

<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();

验证签名:

jsrsasign js实现

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 操作,实际应用中需要根据具体场景调整实现方式。

标签: jsrsasignjs
分享给朋友:

相关文章

js实现拷贝

js实现拷贝

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

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…