cifrado - PHP: ¿Cómo puedo generar una firma HmacSHA256 de una cadena
cifrado php (3)
Aquí hay un ejemplo de firma de transacciones de datatrans (solución suiza de pago electrónico) antes de llamar a PSP con HMAC-SHA-256 .
Espero que pueda ayudar a algunos desarrolladores.
$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));
Nota: la ID del comerciante y la clave HMAC se encuentran en la documentación de Datatrans disponible aquí: https://admin.sandbox.datatrans.com/showcase/doc/Technical_Implementation_Guide.pdf
¿Hay alguna manera de crear una firma HmacSHA256 de una cadena en PHP?
La función hash_hmac()
podría ayudar, aquí:
Genere un valor de clave codificado utilizando el método HMAC
Por ejemplo, la siguiente porción de código:
$hash = hash_hmac(''sha256'', ''hello, world!'', ''mykey'');
var_dump($hash);
Da la siguiente salida:
string ''07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b'' (length=64)
Y, para obtener la lista de algoritmos de hash que se pueden usar, vea hash_algos()
.