使用128位密钥创建HMAC-SHA-256算法

时间:2013-01-14 10:19:55

标签: php algorithm hash

我现在正在努力解决这个问题。我几乎扫描了所有谷歌,但我找不到合适的脚本,如何使用128位密钥创建HMAC-SHA-256算法。

应该这么简单:

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

file.txt仅包含8个零( 00000000 )。

输出必须 FF365893D899291C3BF505FB3175E880 ,但我只是无法理解如何?

我尝试了多种哈希算法,但都没有返回必要的值。我在这里做错了什么以及如何解决它?

我还尝试了this解决方案,但它仍然出错了。

我需要这个与银行联系,他们提供these test data开始。


最终答案:

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

1 个答案:

答案 0 :(得分:4)

您的密钥需要从十六进制转换为二进制数据。添加:

$key = hex2bin($key);

并确保file.txt 包含任何尾随字符,例如新行或回车。

编辑:PHP 5.4.0中引入了函数hex2bin。对于旧版本,您可以使用

$key = pack("H*" , $key);