ログイン システムを実装する場合、パスワードの保護が最も重要です。広く使用されているアプローチの 1 つはパスワード ハッシュです。これには、平文のパスワードをハッシュと呼ばれる暗号化された値に変換することが含まれます。ただし、生成されたハッシュに不一致が発生し、パスワード検証が成功しない場合は、この記事でその理由を調査し、解決策を示します。
Password_hash は、次の理由により、すべてのパスワードに対して一意のハッシュを生成します。ランダムな塩が組み込まれています。このランダム化されたアプローチは、すべてのパスワードの暗号化に使用される食塩を推測しようとする攻撃者を阻止するために設計されたセキュリティ対策です。
ハッシュされたパスワードを検証するには、ユーザーを比較する必要があります。 -password_verify() 関数を使用して、保存されたハッシュ表現を使用して平文パスワードを入力します。プレーンテキストのパスワードが最初の引数として指定され、保存されているハッシュが 2 番目の引数であることを確認してください。検証が成功すると、パスワードは一致します。
次のコード スニペットは、password_hash() を使用したパスワード ハッシュを示しています。
$password = password_hash($password4, PASSWORD_DEFAULT);
$password4 がプレーンテキストであると仮定します。
パスワードを検証するには、以下の構文を使用します。
if (password_verify($password4, $dbpassword))
この例では、$password4 はプレーンテキストのパスワードを表し、$dbpassword はデータベースに保存されているハッシュされたバージョンを表します。比較の結果が true の場合、パスワードは有効です。
デフォルトでは、password_hash() はコスト 10 を使用します。セキュリティを強化するには、このコスト パラメータを増やすことができます。
$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);
これらのガイドラインに従うことで、password_hash を効果的に利用して、ログイン システムのパスワード セキュリティとシームレスなユーザー認証を確保できます。
以上がログイン システムでパスワード ハッシュが一致しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。