パスワードの暗号化に関する多くの質問とチュートリアルを読みましたが、多くのことを学びましたが、これに対する答えはどこにも見つかりませんでした.
データベースに保存するパスワードをハッシュするために crypt() を使用したいと考えています。また、適切に機能するようにソルトを使用する必要があることも知っています。ランダムなソルトを生成する最良の方法は、これまたは類似のものを使用することであると読みました。
私が正しく理解した場合、プロセスは次のとおりです。
- ユーザーがパスワードを入力
- 塩をランダムに作成する
- ハッシュ パスワードとソルト
- 結果をデータベースに保存
しかし、ユーザーがログインしようとしたときにソルトを回復するにはどうすればよいですか?
- ユーザーは自分のパスワードを入力します
- 私はどういうわけか彼自身のユニークなランダムに生成された塩を追加します
- 両方を一緒にハッシュする
- データベースに保存されているハッシュ化されたソルト付きパスワードと比較します。
私が見つけたいくつかの質問では、答えの 1 つは、ランダムに生成されたソルトをデータベースに保存することでした。しかし、ソルティングの全体的な目的は、より安全にすることだと思いました。攻撃者が私の DB にアクセスすると、「ソルト」フィールドが表示され、パスワードが暗号化されていても、アカウントに簡単にアクセスできるようになります。
他の回答では、crypt() を使用するときに「ソルト」がパスワードの先頭に追加されるため、別のフィールドに保存する必要はないとのことです。私の質問は、どうすればアクセスできますか? これを行う機能があり、私は完全に欠けていますか?