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

js实现vue

Vue.js 简介 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。其核心库专注于视图层,易于与其他库或现有项目整合。 实现 Vue.js 的基本步骤 安装 Vue.j…

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js 实现拖拽

js 实现拖拽

实现拖拽的基本步骤 在JavaScript中实现拖拽功能需要监听几个关键事件:mousedown、mousemove和mouseup。以下是实现的基本逻辑。 监听目标元素的mousedown事件,记…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…