当前位置:首页 > JavaScript

jsrsasign js实现

2026-03-02 06:52:05JavaScript

以下是关于使用 jsrsasign 库在 JavaScript 中实现加密、签名等功能的详细方法:

安装与引入

通过 npm 安装 jsrsasign

npm install jsrsasign

在代码中引入:

const jsrsasign = require("jsrsasign");
// 或 ES6 导入
import { KJUR, hextob64, b64tohex } from "jsrsasign";

生成密钥对

使用 RSAKey 生成 RSA 密钥对:

jsrsasign js实现

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 加密(通常用于加密对称密钥):

jsrsasign js实现

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 的常见使用场景,适用于数字签名、加密解密、证书处理等需求。

标签: jsrsasignjs
分享给朋友:

相关文章

js实现动画

js实现动画

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

js 进度条的实现

js 进度条的实现

使用 HTML 和 CSS 创建基础进度条 HTML 结构可以简单使用一个 div 元素作为容器,内部嵌套另一个 div 表示进度: <div class="progress-containe…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

js进度条实现

js进度条实现

使用HTML和CSS创建基础结构 在HTML中创建一个容器元素用于显示进度条,通常使用<div>元素。CSS用于设置进度条的样式,包括宽度、高度、颜色和圆角等属性。 <div cl…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…