PHP Преобразовать простые 3 строки JavaScript в PHP эквивалент - PullRequest
0 голосов
/ 04 августа 2020

Мне предоставили несколько строк JavaScript, которые мне нужно преобразовать в эквивалент PHP. Не будучи разработчиком JavaScript, я борюсь с этим. Вот образец JavaScript, который мне предоставили:

const crypto = require('crypto')
const secret_in_hex = Buffer.from(secret, 'hex');

const hash = crypto.createHmac('sha512', secret_in_hex)
  .update(body)
  .digest('hex')

// Compare hash with the received X-Onfleet-Signature in raw bytes

docs для API, с которым я работаю для настройки приемника Webhook в PHP, упоминание:

Each webhook request contains a signature from Onfleet in X-Onfleet-Signature header. To authenticate the webhook request received on your webhook server, you will need to validate against this header. To validate against X-Onfleet-Signature, you will need to compare its value with an HMAC you have generated using the hexadecimal format of your webhook secrets and the full body of the webhook POST request in raw bytes.

Я предполагаю, что буду использовать функцию hash_hmac и, возможно, функцию bin2hex, но на этом этапе полностью озадачен и признателен, если кто-нибудь может показать мне PHP эквивалент указанного выше JavaScript (при условии, что он есть).

1 Ответ

0 голосов
/ 04 августа 2020

Простейшим эквивалентом должно быть:

$secretInHex = hex2bin($secret);
$hash = hash_hmac('sha512', $body, $secretInHex);

Следует отметить, что hex2bin функция НЕ преобразует шестнадцатеричное число в двоичное число, но декодирует двоичное число в шестнадцатеричном коде. string .

Таким образом, предоставленный секрет уже должен быть шестнадцатеричным, иначе hex2bin вызовет исключение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...