2010-04-25 15 views

Respuesta

46

Uso hash_hmac:

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

Dónde $secret es su clave.

+0

lo que hay dentro $ cadena? –

+0

@MahaDev Lo que sea que desee la firma de. –

+0

@ SebastianPaaskeTørholm will hash_hmac siempre generará una cadena única ...? – usama

9

La función hash_hmac() podría ayudar, aquí:

generar un valor de clave hash 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 utilizar, consulte hash_algos().

1

Aquí es un ejemplo de Datatrans transacción firmar (solución de pago electrónico suizo) antes de PSP llamada 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: el ID de comerciante y clave HMAC son ambos de la documentación Datatrans disponible aquí: https://admin.sandbox.datatrans.com/showcase/doc/Technical_Implementation_Guide.pdf

Cuestiones relacionadas