Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.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 如何在node js中使用hash_hmac函数_Php_Node.js_Md5_Cryptojs - Fatal编程技术网

Php 如何在node js中使用hash_hmac函数

Php 如何在node js中使用hash_hmac函数,php,node.js,md5,cryptojs,Php,Node.js,Md5,Cryptojs,最近我在PHP上使用了相同的代码,它工作得很好,但当我尝试Node Js时,它对我不起作用。请检查一下: PHP 节点代码: var signature = ACCID+"POST"+encodeURI(url).toLowerCase()+requestContentBase64String; var hmacsignature = base64.encode(crypto.createHmac('sha256', APIKey).update(signature).digest('base

最近我在PHP上使用了相同的代码,它工作得很好,但当我尝试Node Js时,它对我不起作用。请检查一下:

PHP

节点代码:

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

请检查此代码中的错误

您的第二行有两个错误:

  • PHP APIKey是
    BASE64_DECODE(APIKey)
    而在Node.js代码中它只是
    APIKey
  • PHP hmacsignature是
    BASE64(十六进制(HMAC))
    而在Node.js代码中是
    BASE64(BASE64(HMAC))
  • 试试这个:

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

    我已经试过你的代码,但它没有给我一样的反应PHP@PriteshMahajan检查更新的代码,如果不匹配,请共享不同的值。请检查我上面的代码:var md5=require('md5');var requestArray=[{“fname”:“mobilenumber”,“fvalue”:“1234568970”},{“fname”:“phone”,“fvalue”:“000000000”}];var post_data=JSON.stringify(requestArray);var m=md5(事后数据);var requestContentBase64String=base64.encode(m);PHP的urlencode和Node.js的encodeURI的行为是不同的。使用类似
    var hmacsignature = crypto.createHmac('sha256', Buffer.from(APIKey, 'base64')).update(signature).digest('base64')