Есть ли способ создать сигнатуру HmacSHA256 строки в php?
PHP: Как я могу сгенерировать сигнатуру HmacSHA256 строки
Ответ 1
Используйте hash_hmac
:
$sig = hash_hmac('sha256', $string, $secret)
Где $secret
- ваш ключ.
Ответ 2
Функция hash_hmac()
может помочь здесь:
Сгенерируйте ключевое значение хэш-функции, используя Метод HMAC
Например, следующая часть кода:
$hash = hash_hmac('sha256', 'hello, world!', 'mykey');
var_dump($hash);
Дает следующий вывод:
string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)
И, чтобы получить список алгоритмов хеширования, которые можно использовать, см. hash_algos()
.
Ответ 3
Вот пример подписания транзакции datatrans (swiss e-payment solution) перед вызовом PSP с HMAC-SHA-256.
Надеюсь, это поможет некоторым разработчикам.
$hmacKey = 30911337928580013;
$merchantId = 1100004624;
$amount = $total * 100;
$currency = 'EUR';
$refno = $orderId;
// HMAC Hex to byte
$secret = hex2bin("$hmacKey");
// Concat infos
$string = $merchantId . $amount. $currency . $refno;
// generate SIGN
$sign = bin2hex(hash_hmac('sha256', $string, $secret));
Примечание: идентификатор продавца и ключ HMAC находятся в документации Datatrans, доступной здесь: https://admin.sandbox.datatrans.com/showcase/doc/Technical_Implementation_Guide.pdf