2010-04-25 38 views

回答

46

使用hash_hmac

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

哪裏$secret是你的鑰匙。

+0

什麼是$字符串裏面? – 2015-10-06 07:38:20

+0

@MahaDev無論你想要簽名。 – 2015-10-06 11:37:30

+0

@SebastianPaaskeTørholm將hash_hmac總是會生成唯一的字符串...? – usama 2017-08-08 12:16:16

9

hash_hmac()功能可以幫助,這裏:

使用 HMAC方法


例如生成帶密鑰的散列值,下面的代碼部分:

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

給出以下輸出:

string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64) 


而且,爲了獲得散列可以使用算法的列表,請參閱hash_algos()

1

這裏是DataTrans的交易簽署呼叫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)); 

注:商戶ID和HMAC密鑰都是從DataTrans的文檔可以在這裏找到:https://admin.sandbox.datatrans.com/showcase/doc/Technical_Implementation_Guide.pdf