ホームページ  >  記事  >  バックエンド開発  >  ハッシュ化されたパスワードが、password_hash() とpassword_verify() を使用しても一致しないのはなぜですか?

ハッシュ化されたパスワードが、password_hash() とpassword_verify() を使用しても一致しないのはなぜですか?

DDD
DDDオリジナル
2024-10-21 07:07:02634ブラウズ

Why Are Hashed Passwords Not Matching Using password_hash() and password_verify()?

PHP password_hash()、password_verify()

問題:

を使用した登録スクリプトパスワード暗号化のためのpassword_hash()と、パスワード検証のためのpassword_verify()を使用するログインスクリプトは、パスワードを正しく一致させません。

答え:

問題の内訳は次のとおりです。コード ソリューション:

キー ポイント:

  • password_hash() は、指定されたアルゴリズムを使用して、指定されたパスワードのハッシュ表現を作成します。
  • password_verify() は、指定されたパスワードとハッシュ化されたパスワードを比較し、一致する場合に true を返します。
  • password_verify() 関数では、比較に元のハッシュ アルゴリズムを使用する必要があります。

問題と解決策:

この問題は、ハッシュと検証に異なるアルゴリズムを使用するときに発生します。受け取ったエラー (「いいえ。パスワード」) は、データベースに保存されているハッシュ化されたパスワードが、ログイン時に入力されたハッシュ化されていないパスワードと一致しないことを示しています。

改訂コード:

登録 (ハッシュ):

<code class="php">$password = password_hash($password, PASSWORD_DEFAULT); // Using PASSWORD_DEFAULT or specific algorithm</code>

ログイン (検証):

<code class="php">if (password_verify($pwd, $row['password'])) {
    // Password matches...
}</code>

脚注:

  • データベース内のパスワード列が、ハッシュされたパスワードを収容できるのに十分な長さ (VARCHAR(255) など) であることを確認してください。
  • セキュリティのためにプリペアド ステートメントを使用し、SQL インジェクションを防ぎます。

以上がハッシュ化されたパスワードが、password_hash() とpassword_verify() を使用しても一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。