当前位置:首页 > 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实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时功能可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是几种常见的实现方式: 使用 setInterva…

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现分页

js实现分页

分页的基本实现思路 在JavaScript中实现分页功能通常需要结合前端和后端逻辑。前端负责渲染分页控件和处理用户交互,后端负责提供分页数据。 前端分页实现 纯前端分页适用于数据量较小的情况,可以直…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval…

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式…

js轮播图实现原理

js轮播图实现原理

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