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