Node REPL可快速完成RSA签名与验证,无需写文件或启服务;先生成2048位密钥对,再用crypto.sign和crypto.verify进行签名及验证,支持直接导入PEM格式密钥,还可封装函数批量测试。

可以直接在 Node REPL 中快速完成签名与验证,无需写文件、启服务,适合调试或临时验签。
准备密钥对
先生成一对 RSA 密钥(只做一次,结果可复用):
- 启动 REPL:
node - 执行生成命令(2048 位足够测试):
const crypto = require('crypto');
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', { modulusLength: 2048 });
console.log('公钥:', publicKey.export({ type: 'spki', format: 'pem' }));
console.log('私钥:', privateKey.export({ type: 'pkcs8', format: 'pem' }));
复制输出的公钥和私钥字符串,后续会用到(建议粘贴到文本编辑器暂存)。
用私钥签名,再用公钥验证
在同一个 REPL 会话中继续操作(保持变量上下文):
- 对一段数据签名:
const data = 'hello world';
const signature = crypto.sign('sha256', Buffer.from(data), privateKey);
console.log('签名(base64):', signature.toString('base64'));
- 用公钥验证签名是否有效:
const isValid = crypto.verify('sha256', Buffer.from(data), publicKey, signature);
console.log('验证结果:', isValid); // true 表示成功
注意:签名和验证必须使用相同的哈希算法(如 sha256),且数据必须是 Buffer 类型。
如果密钥已存在(比如从 PEM 文件读取)
REPL 中也可直接导入已有密钥(需手动换行处理 PEM 字符串):
- 把 PEM 公钥粘贴为多行字符串(含
-----BEGIN PUBLIC KEY-----等):
const pubPem = `-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAu...\n-----END PUBLIC KEY-----`;
const publicKey = crypto.createPublicKey(pubPem);
- 私钥同理(用
createPrivateKey),注意私钥不能有密码保护,否则需额外参数处理。
小技巧:快速重试不同数据
签名验证逻辑可封装成函数,方便反复调用:
const signAndVerify = (msg) => {
const buf = Buffer.from(msg);
const sig = crypto.sign('sha256', buf, privateKey);
return crypto.verify('sha256', buf, publicKey, sig);
};
signAndVerify('test123'); // true
signAndVerify('test124'); // false(篡改后验证失败)
这样就能秒级验证签名逻辑是否正确,特别适合排查格式、编码或算法不匹配问题。


















