2

私は今しばらくこれに苦労しています。Google にあるほとんどすべてをスキャンしましたが、128 ビット キーを使用して HMAC-SHA-256 アルゴリズムを作成する正しいスクリプトが見つかりません。

次のように簡単にする必要があります。

$algo = 'sha256';
$file = 'file.txt';
$key = '1234567890abcdef1234567890abcdef';
echo hash_hmac_file ($algo, $file, $key );

file.txt8 つのゼロ ( 00000000 ) のみが含まれます。

出力はFF365893D899291C3BF505FB3175E880でなければなりませんが、どうやって理解できませんか?

複数のハッシュ アルゴリズムを試しましたが、どれも必要な値を返しません。ここで何が間違っているのか、それを修正する方法は?

私もこの解決策を試しましたが、それでも間違っています。

銀行との接続にこれが必要で、最初にこれらのテストデータを提供してくれます。


最終的な答え:

echo 'FF365893D899291C3BF505FB3175E880<br />';
$algo = 'sha256'; $file = 'file.txt'; $key = '1234567890abcdef1234567890abcdef';
echo substr( strtoupper( hash_hmac_file( $algo, $file, pack("H*" , $key) ) ), 0, 32 );
4

1 に答える 1

4

キーを 16 進数からバイナリ データに変換する必要があります。追加:

$key = hex2bin($key);

また、改行や改行などの末尾の文字が含まれてfile.txtないことも確認してください。

編集: 関数hex2binは PHP 5.4.0 で導入されました。古いバージョンの場合は、代わりに使用できます

$key = pack("H*" , $key); 
于 2013-01-14T10:30:15.677 に答える