使用 PHP 5.0.4 的 HMAC 错误
Wrong HMAC using PHP 5.0.4
我正在尝试使用 PHP 5.0.4 启用 HMAC 哈希 (SHA256) 并使用 phpseclib(据我所知,在这种情况下 phpseclib 依赖于本机 PHP 规范),示例我使用的代码非常简单:
include('Crypt/Hash.php');
$hash = new Crypt_Hash('sha256');
$hash->setKey('abcdefg');
echo bin2hex($hash->hash('something'));
它使用以下字符串生成 HMAC:
e678e33c727ddf7172d3521cf9c0c2a15b66e03eb96d77795fa4adb338dc24a9
但是显然,这个字符串是无效的,因为用这个在线工具做同样的事情:
http://www.freeformatter.com/hmac-generator.html
http://beautifytools.com/hmac-generator.php
http://www.jetcityorange.com/hmac/
我得到这个字符串:
9a43ff294bdfed399e2d5a3d739a4efb7eccc23269b80b3f0d855937d35ae06f
我做错了什么?
注意:SHA1 编码完美无缺。
提前致谢。
这是一个与 32 位 Linux pre-PHP 5.3 上的 float 到 int 转换相关的问题。 phpseclib 的开发人员在 1.0.4 和 2.0.4
版本上修复了这个问题
我正在尝试使用 PHP 5.0.4 启用 HMAC 哈希 (SHA256) 并使用 phpseclib(据我所知,在这种情况下 phpseclib 依赖于本机 PHP 规范),示例我使用的代码非常简单:
include('Crypt/Hash.php');
$hash = new Crypt_Hash('sha256');
$hash->setKey('abcdefg');
echo bin2hex($hash->hash('something'));
它使用以下字符串生成 HMAC:
e678e33c727ddf7172d3521cf9c0c2a15b66e03eb96d77795fa4adb338dc24a9
但是显然,这个字符串是无效的,因为用这个在线工具做同样的事情:
http://www.freeformatter.com/hmac-generator.html
http://beautifytools.com/hmac-generator.php
http://www.jetcityorange.com/hmac/
我得到这个字符串:
9a43ff294bdfed399e2d5a3d739a4efb7eccc23269b80b3f0d855937d35ae06f
我做错了什么?
注意:SHA1 编码完美无缺。
提前致谢。
这是一个与 32 位 Linux pre-PHP 5.3 上的 float 到 int 转换相关的问题。 phpseclib 的开发人员在 1.0.4 和 2.0.4
版本上修复了这个问题