PHP: Как я могу сгенерировать сигнатуру HmacSHA256 строки

Есть ли способ создать подпись HmacSHA256 строки в php?

Solutions Collecting From Web of "PHP: Как я могу сгенерировать сигнатуру HmacSHA256 строки"

Использовать hash_hmac :

 $sig = hash_hmac('sha256', $string, $secret) 

Где $secret .

Функция hash_hmac() может помочь здесь:

Сгенерировать значение хеша с ключом, используя метод HMAC

Например, следующая часть кода:

 $hash = hash_hmac('sha256', 'hello, world!', 'mykey'); var_dump($hash); 

Дает следующий результат:

 string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64) 

И, чтобы получить список алгоритмов хеширования, которые можно использовать, см. hash_algos() .

Ниже приведен пример подписания транзакции 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