59

PHPで文字列のHmacSHA256署名を作成する方法はありますか?

4

5 に答える 5

118

使用hash_hmac:

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

$secretあなたの鍵はどこにありますか。

于 2010-04-25T11:20:24.703 に答える
19

ここhash_hmac()で、関数が役立ちます:

HMAC メソッドを使用してキー付きハッシュ値を生成する


たとえば、コードの次の部分:

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

次の出力が得られます。

string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)


また、使用できるハッシュ アルゴリズムのリストを取得するには、 を参照してくださいhash_algos()

于 2010-04-25T11:20:24.023 に答える
11

HMAC-SHA-256で PSP を呼び出す前のdatatrans トランザクション署名(スイスの電子決済ソリューション)の例を次に示します。

一部の開発者に役立つことを願っています。

$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 キーはどちらも、 https ://admin.sandbox.datatrans.com/showcase/doc/Technical_Implementation_Guide.pdf で入手できる Datatrans ドキュメントからのものです。

于 2017-12-06T14:38:52.047 に答える