PHP password_needs_rehash() 函数用于检查给定的哈希是否实现了所提供的算法和选项。如果不是,则假定需要重新哈希。
语法
password_needs_rehash(hash, algo, options)
参数
hash | 必填。 指定由 password_hash() 创建的哈希值。 |
algo | 必填。 指定密码算法常量,表示对密码进行哈希处理时使用的算法。 |
options | 可选。 指定包含选项的关联数组。有关每种算法支持的选项的文档,请参阅密码算法常量。 |
返回值
如果应重新散列哈希以匹配给定的算法和选项,则返回true,否则为 false。
示例:password_needs_rehash() 示例
下面的示例显示了 password_needs_rehash() 函数的用法。
<?php
$password = 'myPassword';
$hash = "$2y$10$.SCsHZ4KA04AFwoRj6XOS.6iKtQzsO.ydxo6gOVbauASPEoV6cm4a";
//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);
}
//登录用户
}
//显示$hash和$newHash
//用于说明目的
echo $hash;
echo "\n";
echo $newHash;
?>
上述代码的输出将是:
$2y$10$.SCsHZ4KA04AFwoRj6XOS.6iKtQzsO.ydxo6gOVbauASPEoV6cm4a
$2y$11$2WqyJXTttAT2JOTDECchz.DfqvpNdu5l6ICnl2rumXRsO9kUwX8Xa