0

理由はわかりませんが、これがどのように機能するかを完全に理解していないと思います....

これを含むサンプルスクリプトを見つけました:

echo crypt('abc123', '$2a$04$saltsaltsaltsaltsaltxx');

そして、出力を与えると主張しています:

$2a$04$saltsaltsaltsaltsaltxuK2.MS4sJd6ZjnuS0fp2eenjndo.g4hS

しかし、同じコードを実行すると、次のようになります。

 $2pGiQ0v1IyNY

出力として...これまでのところ、実際には何も説明していません。または、私が見た例とは異なる出力が得られるのはなぜですか?

セールとハッシュ化されたパスワードを取得して、ユーザーごとにユーザーテーブルに保存しようとしていますが、次の方法に従っていません。

a) ユーザーごとにランダムなソルトを生成する

b) ソルトとハッシュ パスワードを取得して保存しますか?

c)ログインページなどで確認する方法

4

1 に答える 1

2

PHPドキュメントから:

次のようにソルトを使用したBlowfishハッシュ:「$ 2a $」、2桁のコストパラメータ「$」、およびアルファベット「./0-9A-Za-z」からの22桁。ソルトでこの範囲外の文字を使用すると、crypt()は長さゼロの文字列を返します。2桁のコストパラメータは、基になるBlowfishベースのハッシュアルゴリズムの反復回数の2を底とする対数であり、範囲04〜31である必要があります。この範囲外の値では、crypt()が失敗します。

ハッシュされたパスワードからソルトを分割する必要はありません。文字列全体( "$ 2a $ 04 $ saltsaltsaltsaltsaltxuK2.MS4sJd6ZjnuS0fp2eenjndo.g4hS")を保存し、提供されたパスワードがハッシュと一致するかどうかを確認する場合は、

if (crypt($form_password, $stored_hash) == $stored_hash) {
    // password is correct
}
于 2012-05-27T09:53:27.283 に答える