(PHP 5 >= 5.5.0, PHP 7, PHP 8)
password_needs_rehash — 指定したハッシュがオプションにマッチするかどうかを調べる
$hash
, string|int|null $algo
, array $options
= []): bool指定したハッシュが、特定のアルゴリズムとオプションを満たしているかどうかを調べます。 満たしていない場合は、ハッシュを再計算する必要があるとみなします。
hash
password_hash() が作ったハッシュ。
algo
パスワードのハッシュに使うアルゴリズムを表す パスワードアルゴリズム定数。
options
オプションを含む連想配列。各アルゴリズムがサポートするオプションについては、 パスワードアルゴリズム定数 のページを参照ください。
指定した algo
と options
にマッチするためにハッシュの再計算が必要な場合は true
、
それ以外の場合は false
を返します。
バージョン | 説明 |
---|---|
7.4.0 |
algo パラメータは string を期待するようになりました。
しかし、後方互換性のために int も未だ受け入れています。
|
例1 password_needs_rehash() の使用例
<?php
$password = 'rasmuslerdorf';
$hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS';
// cost パラメータは、ハードウェアの性能の向上にあわせて変えることができます
$options = array('cost' => 11);
// 格納されたハッシュを、平文のパスワードに対して検証します
if (password_verify($password, $hash)) {
// より新しいハッシュアルゴリズムの存在や、コストの変更を
// 確認します
if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) {
// そんな場合は新しいハッシュを計算して、古いものを置き換えます
$newHash = password_hash($password, PASSWORD_DEFAULT, $options);
}
// ログイン
}
?>