KKOOLL
@KKOOLL
full stack-developer

Почему код php работает неправильно?

Почему код корректно работает на Node JS, а на PHP нет ( разные hash )? В чём ошибка php ?

Node JS
const { createHash, createHmac } = require('crypto')

const checkSignature = (token, { body, headers }) => {
  const secret = createHash('sha256').update(token).digest()
  const checkString = JSON.stringify(body)
  const hmac = createHmac('sha256', secret).update(checkString).digest('hex')
  return hmac === signature['crypto-pay-api-signature']
}

Code PHP
$secret =hash('sha256',$token);
$hash =hash_hmac('sha256',json_encode($body),$secret,false);
  • Вопрос задан
  • 202 просмотра
Решения вопроса 1
KKOOLL
@KKOOLL Автор вопроса
full stack-developer
Итого рабочий php, может кому пригодится для CryptoBot
$secret =hash('sha256',$token,true);
$hash =hash_hmac('sha256',$body,$secret,false);

Спасибо Lynn «Кофеман»
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
1MK-Ultra
@1MK-Ultra
программист
Скорее всего содержание Body и $Body разное. js шифрует содержание переменной в памяти. А php шифрует содержимое текста в переменной.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы