2

PHP (Codeigniter) と Phils RESTserver を使用して API を開発しています。パスワードとソルトで crypt() を使用してハッシュを作成しています。

問題は、crypt() アルゴリズムの結果であるハッシュが、ローカル マシンとサーバーで異なることです。

ローカルでは問題なく動作しますが、サーバー上では (略して) 動作しません。パスワードとソルトをハードコードしてみたので、同じであることはわかっています。

ローカル マシンからのハッシュ:

$2a$10$g6J7CUjJvB0JpTd7UcrowePEbqp/oBmZEpd7vS.5HFYx38f08Tb/a

サーバーからのハッシュ:

$2jkP2/LlC/H6

何が間違っている可能性がありますか?

(サーバーはcentos 5を実行しています)。

4

1 に答える 1

3

お使いの PHP バージョンは、crypt のフグ ハッシュをサポートしていない可能性があります。出力の $2a$ は、両方のプラットフォームで利用できない可能性がある CRYPT_BLOWFISH を使用しようとしていることを示しています。

http://uk.php.net/crypt

PHP 5.3.2 でバグが修正されました。

無効なラウンドでの Blowfish の動作を修正して、DES にフォールバックする代わりに「失敗」文字列 (「*0」または「*1」) を返すようにしました。

したがって、ソルトの最初の2文字しか含まれていないため、サーバーからのハッシュはDESにフォールバックしていると思います。

于 2011-08-14T18:16:46.510 に答える