cifrado php hmac

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() .


Usa hash_hmac :

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

Donde $secret es tu llave.