我想在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,這是我在閱讀上面的代碼簽名。 對不起,不適用的文件命名。 –