PHPのpassword_verifyおよびpassword_hashのパスワード検証

password_hash() は、十分強力な一方向ハッシュ アルゴリズムを使用してパスワードのハッシュを作成します。

現在サポートされているアルゴリズム:

  • PASSWORD_DEFAULT - bcrypt アルゴリズムを使用します (PHP 5.5.0 のデフォルト)。PHP がより新しく強力なアルゴリズムを追加すると、この定数は変更されることに注意してください。したがって、この定数を使用して生成される結果の長さは将来変更される予定です。したがって、結果を保存するデータベース内の列は 60 文字 (できれば 255 文字) を超える可能性があります。
  • PASSWORD_BCRYPT - CRYPT_BLOWFISH アルゴリズムを使用してハッシュを作成します。これにより、  "$2y$" と互換性のあるcrypt()が生成されます。結果は 60 文字の文字列になるか、失敗した場合に返されます false
  • PASSWORD_ARGON2I - Argon2i ハッシュ アルゴリズムを使用してハッシュを作成します。このアルゴリズムは、PHP が Argon2 サポートを使用してコンパイルされた場合にのみ使用できます。
  • PASSWORD_ARGON2ID - Argon2id ハッシュ アルゴリズムを使用してハッシュを作成します。このアルゴリズムは、PHP が Argon2 サポートを使用してコンパイルされた場合にのみ使用できます。

PASSWORD_BCRYPT サポートされているオプション:

  • salt(文字列) - パスワードをハッシュするために手動で提供されたソルト。これにより、自動ソルト生成 (ソルト) が回避されます。

    この値を省略すると、password_hash() はパスワード ハッシュごとにランダムなソルト値を自動的に生成します。この操作は意図的なパターンです。

    警告する

    ソルト オプションは非推奨になりました。現時点では、デフォルトで生成されたソルトを使用することを選択するのが最善です。PHP 8.0.0 以降、明示的に指定されたソルト値は無視されます。

  • cost ( int) - アルゴリズムによって使用されるコストを表します。crypt() ページにはコスト値の例が含まれています。

    省略した場合、デフォルトは です 10このコストは適切な最終利益ですが、独自のハードウェアに応じてこの値を増やすことができる場合があります。

PASSWORD_ARGON2I および PASSWORD_ARGON2ID サポートされているオプション:

  • memory_cost ( int ) - Argon2 ハッシュを計算するときの最大メモリ (単位: KB)。デフォルト値:  PASSWORD_ARGON2_DEFAULT_MEMORY_COST

  • time_cost ( int) - Argon2 ハッシュを計算する際の最大時間。デフォルト値:  PASSWORD_ARGON2_DEFAULT_TIME_COST

  • threads ( int) - Argon2 ハッシュを計算するときのスレッドの最大数。デフォルト値:  PASSWORD_ARGON2_DEFAULT_THREADS

暗号化:

echo パスワード_ハッシュ("ラスムスラードルフ", PASSWORD_BCRYPT)

確認する:

<?php
// 想知道以下字符从哪里来,可参见 password_hash() 示例
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('rasmuslerdorf', $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
?>

おすすめ

転載: blog.csdn.net/taoshihan/article/details/132375345