2016-09-01 4 views
0

私は、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エンコーディングは完全に機能します。

ありがとうございます。

+0

PHPが5.1.XでのネイティブHMACサポートを追加しました。PHPをアップデートできますか? – iamgory

+0

'9a43ff294bdfed399e2d5a3d739a4efb7eccc23269b80b3f0d855937d35ae06f'は正しいハッシュです。問題の一部は、文字列としてオプションを渡すことです。どの文字列でも構文チェックが行われます。 – zaph

+0

私はPHP 5.0.5でそれを試し、 '9a43ff29'文字列を得ました。 Crypt_Hashには、mhash、hash、internalという3つのモードがあります。 mhashとinternalはPHP 5.0で利用可能です。私はそれを試みたときに内部モードが使用されました。サーバーにmhashがインストールされている可能性がありますか? phpinfo()出力を投稿できますか? – neubert

答えて

1

32ビットLinux pre-PHP 5.3でのfloatからintへの変換に関連する問題でした。 phpseclibの開発者はバージョン1.0.4の問題を修正しました& 2.0.4