如何在节点js中使用hash_hmac函数

问题描述 投票:0回答:1

最近我在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'))

请检查此代码中的错误。

php node.js md5 cryptojs
1个回答
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')
© www.soinside.com 2019 - 2024. All rights reserved.