小编Ami*_*eth的帖子

node.js加密签名和openssl签名不匹配

我想对node.js中的文件执行RSA-SHA512。我可以计算给定数据文件的sha512哈希值,该哈希值与openssl的匹配。但是,当尝试在同一哈希上获取数字签名时,node.js签名与openssl签名不同。以下是示例代码片段:

var data = new Buffer(512);
data = fs.readFileSync('/tmp/data');
var pem = fs.readFileSync('/tmp/boot2-prvKey.pem');
var privateKey = pem.toString('ascii');

var signer = crypto.createSign("RSA-SHA256");
signer.update(data);
var sign = signer.sign(privateKey, 'hex');
console.log("SIGN " + sign + '\n');
Run Code Online (Sandbox Code Playgroud)

Openssl命令对数据进行签名:

openssl rsautl -sign -in /tmp/data -inkey /tmp/boot2-prvKey.pem -out sig
Run Code Online (Sandbox Code Playgroud)

以上两种都生成不同的签名。

我有两个问题:1)我想计算文件的RSA-SHA256,因此我首先计算整个文件的sha256哈希,然后将此哈希作为输入传递给签名函数。那是正确的方法吗?2)如果是,那么上面的代码可能出了什么问题?如果没有,正确的方法是什么?

我正在使用的node.js版本是0.10.36,openssl版本是1.0,1。

openssl rsa sha256 digital-signature node.js

2
推荐指数
1
解决办法
1286
查看次数

标签 统计

digital-signature ×1

node.js ×1

openssl ×1

rsa ×1

sha256 ×1