当前位置:首页 > JavaScript

jsrsasign js实现

2026-04-05 07:54:48JavaScript

使用 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 格式:

jsrsasign js实现

const prvKeyPEM = KEYUTIL.getPEM(prvKeyObj, 'PKCS8PRV');
const pubKeyPEM = KEYUTIL.getPEM(pubKeyObj);

注意事项

  • RSA 加密有长度限制,加密长数据需分段处理
  • 实际应用中应妥善保管私钥
  • 生产环境建议使用 2048 位或更长的密钥
  • 加密敏感数据时配合使用对称加密算法更安全

以上代码展示了 jsrsasign 库的基本 RSA 操作,实际应用中需要根据具体场景调整实现方式。

标签: jsrsasignjs
分享给朋友:

相关文章

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js轮播图实现原理

js轮播图实现原理

轮播图的基本原理 轮播图通过动态切换显示的内容(图片、文本等)实现视觉上的滑动效果。核心原理是利用CSS和JavaScript控制元素的显示与隐藏,或通过变换位置实现滑动动画。 实现方法一:CSS…

js实现延迟

js实现延迟

实现延迟的方法 在JavaScript中,实现延迟操作有多种方式,以下是几种常见的方法: 使用setTimeout函数 setTimeout是JavaScript中最常用的延迟执行方法。它接受一个回…

js实现游标

js实现游标

使用JavaScript实现游标 在JavaScript中,可以通过操作DOM元素的cursor样式属性来实现自定义游标效果。以下是几种常见的实现方法: 修改默认鼠标指针样式 通过CSS的curso…

js树实现

js树实现

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

js实现滚动

js实现滚动

实现滚动效果的方法 在JavaScript中实现滚动效果可以通过多种方式完成,以下是一些常见的方法: 使用window.scrollTo() window.scrollTo()方法可以将页面滚动到指…