web-dev-qa-db-ja.com

PHP:文字列のHmacSHA256署名を生成する方法

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

34
tarnfeld

使用する - hash_hmac

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

どこ $secretはあなたの鍵です。

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

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


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

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

次の出力が得られます。

_string '07a932dd17adc59b49561f33980ec5254688a41f133b8a26e76c611073ade89b' (length=64)
_


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

12
Pascal MARTIN

以下は、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

5
Meloman