【发布时间】:2015-05-15 18:11:55
【问题描述】:
我想对 node.js 中的文件执行 RSA-SHA512。我可以计算给定数据文件的 sha512 哈希值,它与 openssl 的哈希值相匹配。 但是,当尝试在同一个哈希上获取数字签名时,node.js 签名与 openssl 签名不同。 下面是一个示例代码sn-p:
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');
Openssl 命令对数据进行签名:
openssl rsautl -sign -in /tmp/data -inkey /tmp/boot2-prvKey.pem -out sig
以上两种都生成不同的签名。
我有几个问题 1)我想计算一个文件的 RSA-SHA256,所以我首先计算整个文件的 sha256 哈希,并将这个哈希作为输入传递给签名函数。 这是一个正确的方法吗? 2)如果是,上面的代码可能出了什么问题?如果不是,正确的做法是什么?
我使用的node.js版本是0.10.36,openssl版本是1.0,1。
【问题讨论】:
-
"我首先计算整个文件的 sha256 哈希值,并将这个哈希值作为输入传递给签名函数" -- 我没有在你的代码中使用哈希函数'已经提供。这不是你的真实代码,还是我误解了你的描述?
-
实际上我的数据文件的哈希值存储在 /tmp/data 中,我正在阅读上面的代码进行签名。抱歉文件命名不当。
标签: node.js openssl rsa digital-signature sha256