0

パスワードの保護について読んでいて、コードが正しいかどうかについてフィードバックを受け取りたいと思っています。私はblowfishをcrypt()一緒に使用して、だれもがパスワードを解読できないようにしようとしています。また、質問があります。パスワードを保存する$stringとき、ユーザーがサインインしたときにユーザーを確認するために再度使用できるように、変数も保存する必要があると思いますが、正しいですか?

function unique_md5() {
  mt_srand(microtime(true)*100000 + memory_get_usage(true));
  return md5(uniqid(mt_rand(), true));
}

//unique_md5 returns a random 16 character string

$string = '$2a$07$' . unique_md5();

$password = 'password';

$password = trim($password);

$protected_password = crypt($password, $string); 

//then store the variables $string and $protected_password into the database
4

2 に答える 2

3

Blowfishは、ソルトとして22文字の文字列を使用します(タイプとコストパラメーターは含まれません)。MD5は32文字の文字列を返しますが、これはで受け入れられませんcrypt_blowfish。適切な塩を使用してください。

于 2012-09-02T20:16:54.017 に答える
2

いいえ、暗号化されたパスワードがすでに追加された状態で返されるため、暗号化されたパスワードとともにソルトを保存する必要はありません。プレーンテキストのパスワードが暗号化されたパスワードと一致するかどうかを確認する場合は、を確認するだけで済みます$crypted_password == crypt($plaintext_password, $crypted_password)

于 2012-09-02T20:17:34.203 に答える