P粉8967510372023-08-18 17:37:32
はい、正しく理解できました。関数password_hash()は自動的にソルトを生成し、生成されたハッシュ値にソルトを含めます。ソルトをデータベースに保存するのは完全に正しいです。ソルトがわかっている場合でも機能します。
リーリーあなたが言及した 2 番目のソルト (ファイルに保存されているソルト) は、実際にはペッパーまたはサーバー側のキーです。ハッシュ(塩など)の前にそれを追加すると、唐辛子を追加したことになります。ただし、より良い方法があります。最初にハッシュ値を計算し、次にサーバー側キーを使用してハッシュ値を暗号化する (双方向暗号化) ことができます。このようにして、必要に応じてキーを変更できます。
ソルトとは異なり、このキーは秘密にしておく必要があります。混乱してソルトを隠そうとする人がよくいますが、ソルトに任せて、キーを使って秘密を追加する方が良いでしょう。
P粉4222270232023-08-18 10:36:51
パスワードを保存するには、password_hash
を使用することをお勧めします。これらをデータベースとファイルに別々に保存しないでください。
次の入力があるとします:
リーリーまず次の方法でパスワードをハッシュします:
リーリー次に出力を確認します:
リーリーご覧のとおり、ハッシュ化されています。 (これらの手順は完了しているものとします)。
次に、このハッシュされたパスワードをデータベースに保存します。 パスワード列がハッシュ値を収容できる十分な大きさであることを確認してください (少なくとも 60 文字以上) 。ユーザーがログインを要求すると、データベース内のハッシュが次の方法で入力されたパスワードと一致するかどうかを確認できます。 リーリー