我嘗試做以下PHP函數如何在Node.js的
openssl_private_encrypt
用我的私鑰簽名的字符串
下面是等效的簽署W /私鑰我在做
var signer = crypto.createSign('RSA-SHA256').update(timestamp + '|' + userId);
var signature = signer.sign(privKey, 'base64');
我的第一個問題是什麼意思,當RSA和SHA256放在一起?我明白使用RSA私鑰加密某些內容或使用SHA256散列某些內容意味着什麼。但我無法理解將這兩者結合在一起意味着什麼。
我把它放在那裏,因爲createSign需要一個字符串參數,(「RSA」不支持),以及RSA-SHA256是我發現的最接近的事。
我的第二個問題是,我該怎麼辦
openssl_private_encrypt
在Node.js的
?
嗨,非常感謝你的解釋。事情現在更加清晰。但我實際上正在開展跨公司協作項目。他們的文檔只在PHP中提供了「openssl_private_encrypt」示例。我別無選擇,只能走這條路。 – Max 2013-03-15 01:27:58
您是否知道在簽名之前「openssl_private_encrypt」是否執行了散列計算?如果是,哪個散列算法?非常感謝你! – Max 2013-03-15 01:28:33
不,它只是執行PKCS#1填充。見例如在這裏,http://www.sitepoint.com/forums/showthread.php?610882-OpenSSL-Private-Key-Encryption。請注意PKCS#1對1.5簽名方案使用了11個字節的填充開銷(沒有hash *結構*,就是這樣)。所以用戶可能使用128字節(1024位)的密鑰大小。 – 2013-03-15 10:06:14