我想在node.js文件上执行RSA-SHA512。我可以计算与openssl相匹配的给定数据文件的sha512哈希值。 但是,当试图在同一个散列上获取数字签名时,node.js签名与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');
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哈希,并将此哈希作为输入传递给签名函数*” - 我没有在您提供的代码中使用哈希函数。这不是你真正的代码,还是我误解你的描述? – apsillers
其实我有我的数据文件散列存储在/ tmp/data,这是我在阅读上面的代码签名。 对不起,不适用的文件命名。 –