PHPで文字列のHmacSHA256署名を作成する方法はありますか?
hash_hmac()
関数は、ここで役立ちます:
HMACメソッドを使用してキー付きハッシュ値を生成します
たとえば、次のコード部分:
_$hash = hash_hmac('sha256', 'hello, world!', 'mykey');
var_dump($hash);
_
次の出力が得られます。
_string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)
_
そして、使用できるハッシュアルゴリズムのリストを取得するには、 hash_algos()
を参照してください。
以下は、datatransトランザクション署名(スイスの電子決済ソリューション)の例で、HMAC-SHA-でPSPを呼び出す前の例です。 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