Как использовать функцию hash_hmac в узле js - PullRequest
0 голосов
/ 03 сентября 2018

Недавно я использовал тот же код на 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 голосов
/ 03 сентября 2018

Ваша вторая строка содержит две ошибки:

  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')
...