Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP——将正确的HMAC签名计算为nodejs脚本_Php_Node.js_Authentication_Hmac_Cryptojs - Fatal编程技术网

PHP——将正确的HMAC签名计算为nodejs脚本

PHP——将正确的HMAC签名计算为nodejs脚本,php,node.js,authentication,hmac,cryptojs,Php,Node.js,Authentication,Hmac,Cryptojs,因此,我正在编写一个PHP脚本,用于查询使用HMAC身份验证头的API。然而,我一直在努力正确编码HMAC签名。我有一个预先存在的nodejs脚本作为模板 在nodejs脚本中,HMAC签名使用以下公式计算: var crypto=require('crypto'); var hmac=[]; hmac.secret='odc0ytm3yzuxodflmwq1ytdhmgqwy2nizme1n2y1oddjyzm5ntgymdjzjvkyte4mmqxyzq5odk0m2qznwqxyw=';

因此,我正在编写一个PHP脚本,用于查询使用HMAC身份验证头的API。然而,我一直在努力正确编码HMAC签名。我有一个预先存在的nodejs脚本作为模板

在nodejs脚本中,HMAC签名使用以下公式计算:

var crypto=require('crypto');
var hmac=[];
hmac.secret='odc0ytm3yzuxodflmwq1ytdhmgqwy2nizme1n2y1oddjyzm5ntgymdjzjvkyte4mmqxyzq5odk0m2qznwqxyw=';
hmac.timestamp=145732647500;
hmac.path='/account/';
hmac.message=hmac.path+'\n'+hmac.timestamp;
var sig=crypto.createHmac('sha512',新缓冲区(hmac.secret,'base64');
hmac.signature=sig.update(hmac.message.digest('base64');
控制台日志(hmac);
这将正确计算HMAC签名,如下所示: bWjIFFtFmWnj0+xHLW2uWVa6M6DpbIV81uyUWwRFCJUg+0xYT40QWZWQJGVPUB/JBJGZUOSO0QV5JHMYEV3A==

同时,在PHP中,我使用:


问题在于,在将
$hmac['secret']
传递给
hash_hmac()
之前,您没有先对其进行解码

尝试:

完美——上帝保佑。
$hmac['secret'] = base64_decode($hmac['secret']);
$hmac['signature'] = base64_encode(
  hash_hmac('sha512', $hmac['message'], $hmac['secret'], true)
);