0

ユーザーがサインアップおよびログイン時にパスワードを入力するときにphpassを使用しています。Macでローカルに作業しているときに機能しています。

しかし、オンラインでパスワードをハッシュすると、間違った方法でハッシュしているように見えます。

ローカル データベースをオンライン データベースにインポートしました。また、ローカルにいたときに生成されたパスワードは、オンラインのときにも完璧に機能します。

そう.. phpass online を使用していると、何かが完全にうまくいかないような気がします。

私はこのように使用しています:

$hasher = new PasswordHash(8, FALSE);
$password = HashPassword($_POST["password"]);

これは私に次のようなものを与えるでしょう:

_zzD.NrhAaUmhr6G8i5E //when I'm local
$2a$08$mt3//cn0tqMmug/.tjKeC.AbZhYyj470EY9zSivZvNOtwk4A //when I'm online

パスワードを確認すると、次のようになります。

$hasher = CheckPassword($_POST["password"], $row["password"]);
//$_POST is ofc. the submitted
//$row is the password for the user from the db.
//the user is found on the username and then im checking password.

何が悪いのか全くわかりません。SOの誰かが同じ問題を抱えていることを望んでいました。

4

1 に答える 1

3

phpass でサポートされている推奨ハッシュ方法は Blowfish ベースの bcrypt であり、BSDI スタイルの拡張 DES ベースのハッシュへのフォールバックと、phpass 自体に実装されている MD5 ベースのソルトおよび可変反復カウント パスワード ハッシュへの最後の手段としてのフォールバックがあります。

環境が異なるハッシュ アルゴリズムを使用している可能性があります。開発環境と本番環境の両方で、blowfish 暗号化がサポートされていることを確認する必要があります。

より弱い代替手段として、この記事では次のように述べています。

phpass 自体に実装されている MD5 ベースのソルトおよびストレッチ ハッシングは、すべてのシステムでサポートされています。phpass は、これらの「移植可能な」ハッシュの使用を強制する方法を提供します。これは、PasswordHash コンストラクター関数へのブール型パラメーターです。

PasswordHashコンストラクターの 2 番目のオプションは$portable_hashes、マシン間を移動しても安全な (より弱い) ハッシュをライブラリに強制的に生成させることができるオプションです。使ってみて

$hasher = new PasswordHash(8, true);
于 2012-06-13T13:42:19.283 に答える