使用node-forge进行rsa加签验签
安装
在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);
务必根据实际情况调整密钥长度、哈希算法和签名模式。同时,请确保正确管理密钥安全,避免私钥泄露。