password_verify

パスワードがハッシュにマッチするかどうかを調べる

説明

bool password_verify(#[\SensitiveParameter]string $password, string $hash)

指定したハッシュがパスワードにマッチするかどうかを調べます。 password_verifycrypt と互換性があるので、 crypt が作ったパスワードハッシュは password_verify でも使えます。

password_hash は、 アルゴリズムやコスト、ソルトといった情報もハッシュに含めて返すことに注意しましょう。 したがって、ハッシュの検証に必要な情報はすべてそこに含まれていることになります。 これで、検証関数がハッシュの検証をするときに、ソルトやアルゴリズム情報を別の場所から取得する必要がなくなります。

この関数は、タイミング攻撃に対して安全です。

パラメータ

password

ユーザーのパスワード。

hash

password_hash が作ったハッシュ。

戻り値

パスワードとハッシュがマッチする場合に true、それ以外の場合に false を返します。

例1 password_verify の例

以下は簡略化した例です。必要に応じて、正しいパスワードのハッシュを再計算することを推奨します。 password_needs_rehash の例も参照ください。

<?php
// これをどうやって作ったのかは、password_hash() の例を参照ください
$hash = '$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a';

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

上の例の出力は以下となります。

Password is valid!

参考