安装

在Node.js中,node-forge 是一个非常流行的用于处理多种加密算法的纯JavaScript库,其中包括RSA签名。下面是一个基本示例,展示了如何使用node-forge库进行RSA加签(即使用私钥对数据进行签名):
首先确保已安装了 node-forge库,如果还未安装,可以通过npm进行安装:

npm install node-forge

签名

然后,你可以按照以下步骤创建RSA密钥对,并使用私钥对数据进行签名:

const forge = require('node-forge');

// 1. 创建RSA密钥对
let keys = rsa.generateKeyPair({bits: 2048}); // 生成2048位密钥对
let privateKey = forge.pki.privateKeyToPem(keys.privateKey); // 转换私钥为PEM格式
let publicKey = forge.pki.publicKeyToPem(keys.publicKey); // 转换公钥为PEM格式

// 2. 对数据进行签名
let dataToSign = 'The message to be signed'; // 待签名的数据
let md = forge.md.sha256.create(); // 使用SHA-256哈希算法
md.update(dataToSign, 'utf8');

// (defaults to RSASSA PKCS#1 v1.5)
let signature = privateKey.sign(md); 

console.log('Signature:', forge.util.encode64(signature)); // 输出Base64编码的签名

// 签名后通常会将原始数据和签名一起发送给接收方,接收方可以用对应的公钥验证签名的有效性

验签

使用公钥对签名进行验签

var md = forge.md.sha256.create();
md.update('sign this', 'utf8');
publicKey.verify(md.digest().getBytes(), signature);

务必根据实际情况调整密钥长度、哈希算法和签名模式。同时,请确保正确管理密钥安全,避免私钥泄露。