2

ユーザー ログイン用のパスワードを処理するためのオプションを検討しており、CRYPT_BLOWFISH の使用方法についていくつか質問がありました。実装方法について読みましたが、実際にプレイする前に理解を深めたいと思います。

だから私はこのようなことを計画していました:

 function genBlowfishSalt()
 {
      //return random string for Salt
 }

 $hash = crypt($password, '$2a$12$'. genBlowFishSalt());

私の質問は次のとおりです。

1) 「$2a$12$」とは?

2)この場合、各ユーザーのソルトを保存する必要があることを理解しています。独自のハッシュなしで保存しても問題ないと思いますか?ソルトはハッシュ値に追加されますか?

3) ログイン時に、ハッシュ値の比較を実行するにはどうすればよいですか?

4) また、ユーザーごとに反復回数を保存する必要があるという概念があることも読みましたが、それはパスワードのハッシュにどのように影響しますか?

ありがとう!

4

1 に答える 1

3

1)それはハッシュのソルトです。ソルトをよりランダムにする必要があります(たとえば、最大の保護のためにユーザーごとに異なるソルトを使用します)

2)はい、ソルトをあるフィールドに保存し、ソルトハッシュを別のフィールドに保存できます。

3) 次の手順を実行します。

  1. フォームからパスワードとユーザー名を取得する
  2. データベースからソルトを取得し、そのソルトを使用してパスワード文字列を crypt() します
  3. 取得した新しい文字列 (ハッシュ + ソルト化されたパスワード) をデータベース (EG はユーザー名 = xxx およびパスワード = zz9zjz9) と比較し、行が返されたかどうかを確認します。行が返された場合は、それが正しいパスワードを入力してログインします。

4) 何を言っているのかわからないので、詳しく教えてください!

于 2012-07-24T10:33:50.557 に答える