无法在node.js中从PHP复制sha512 hmac。
无法在node.js中从PHP复制sha512 hmac。
我有一些PHP代码,可以生成以下的HMAC:\n
\n当我尝试在node.js中生成类似的代码时,得到的base64编码的结果与我想要的不同,而且我无法弄清楚原因。\n
var hmac = function(msg, secret){ var s = (new Buffer(secret, 'base64')).toString('utf8'); var hmac = require('crypto').createHmac('sha512',s); hmac.update(msg); return hmac.digest('base64'); }; var secret = "7pgj8Dm6"; var message = "Test\0Message"; var wanted = "69H45OZkKcmR9LOszbajUUPGkGT8IqasGPAWqW/1stGC2Mex2qhIB6aDbuoy7eGfMsaZiU8Y0lO3mQxlsWNPrw=="; var got = hmac(message, secret); if(wanted === got){ console.log('一切正常。'); }else{ console.log('哈希值不正确 :('); } console.log('期望值:\t'+wanted); console.log('实际值:\t'+got);
\n我这样做的动机是anxpro API,我想稍微尝试一下。
我找到了解决方法。问题出在我在
var hmac = function(msg, secret){
var s = new Buffer(secret, 'base64');
var hmac = require('crypto').createHmac('sha512',s);
hmac.update(msg);
return hmac.digest('base64');
};
问题的原因是在
解决方法很简单,只需要将对
希望这个解决方法能对遇到类似问题的人有所帮助。如果你有任何疑问,请随时提问。