私は、PHP 5.0.4でHMACハッシュ(SHA256)を有効にし、phpseclibを使用しようとしています(この場合、phpseclibはネイティブPHP仕様に依存しています)間違ったHMAC PHP 5.0.4
include('Crypt/Hash.php');
$hash = new Crypt_Hash('sha256');
$hash->setKey('abcdefg');
echo bin2hex($hash->hash('something'));
それはこの文字列をHMACを生成します:
e678e33c727ddf7172d3521cf9c0c2a15b66e03eb96d77795fa4adb338dc24a9
しかし、このオンラインツールで同じことをやっているので明らかに、この文字列が無効です:
012それはかなり簡単です使用してメートルhttp://www.freeformatter.com/hmac-generator.html
http://beautifytools.com/hmac-generator.php
http://www.jetcityorange.com/hmac/
私はこの文字列を取得:
9a43ff294bdfed399e2d5a3d739a4efb7eccc23269b80b3f0d855937d35ae06f
私が間違って何をしているのですか?
注:SHA1エンコーディングは完全に機能します。
ありがとうございます。
PHPが5.1.XでのネイティブHMACサポートを追加しました。PHPをアップデートできますか? – iamgory
'9a43ff294bdfed399e2d5a3d739a4efb7eccc23269b80b3f0d855937d35ae06f'は正しいハッシュです。問題の一部は、文字列としてオプションを渡すことです。どの文字列でも構文チェックが行われます。 – zaph
私はPHP 5.0.5でそれを試し、 '9a43ff29'文字列を得ました。 Crypt_Hashには、mhash、hash、internalという3つのモードがあります。 mhashとinternalはPHP 5.0で利用可能です。私はそれを試みたときに内部モードが使用されました。サーバーにmhashがインストールされている可能性がありますか? phpinfo()出力を投稿できますか? – neubert