如何在Node JS中使用hash_hmac函数

时间:2018-09-03 10:45:24

标签: php node.js md5 cryptojs

最近,我在PHP上使用了相同的代码,并且工作正常,但是当我尝试Node Js时,它对我不起作用。请检查一次:

PHP

$signature = $ACCID . "POST" . strtolower(urlencode($url)).$requestContentBase64String; 
$hmacsignature = base64_encode(hash_hmac("sha256", $signature, base64_decode($APIKey), true)); 

节点代码:

var signature = ACCID+"POST"+encodeURI(url).toLowerCase()+requestContentBase64String; 
var hmacsignature = base64.encode(crypto.createHmac('sha256', APIKey).update(signature).digest('base64'))

请检查此代码中的错误。

1 个答案:

答案 0 :(得分:0)

您的第二行有两个错误:

  1. PHP APIKey为BASE64_DECODE(APIKey),而在Node.js代码中仅为APIKey
  2. PHP hmacsignature为BASE64(HEX(HMAC)),而在Node.js代码中为BASE64(BASE64(HMAC))

尝试一下:

var hmacsignature = crypto.createHmac('sha256', Buffer.from(APIKey, 'base64')).update(signature).digest('base64')