options, 一个包含有选项的关联数组。目前支持两个选项:
salt,在散列密码时加的盐(干扰字符串),
cost,用来指明算法递归的层数。这两个值的例子可在 crypt() 页面找到。
示例,
<?php $password = 'rasmuslerdorf'; $hash = '$2y$10$YCFsG6elYca568hBi2pZ0.3LDL5wjgxct1N8w/oLR/jfHsiQwCqTS'; // cost 参数可随硬件的提升也不断提升 $options = array('cost' => 11); // 使用纯文本密码 验证存储的散列 if (password_verify($password, $hash)) { // 检查是否有更新的散列算法可用或 cost 是否已经改变 if (password_needs_rehash($hash, PASSWORD_DEFAULT, $options)) { // 如果是,请创建一个新的哈希值,并替换旧的哈希值 $newHash = password_hash($password, PASSWORD_DEFAULT, $options); } // 用户登录验证完成 // ... } ?>
password_verify
说明
boolean password_verify ( string $password , string $hash )
注意 password_hash() 返回的哈希包含了算法、 cost 和盐值。 因此,所有需要的信息都包含内。使得验证函数不需要储存额外盐值等信息即可验证哈希。
参数
password, 用户的密码。
hash, 一个由 password_hash() 创建的散列值。
示例,
<?php // 想知道以下字符从哪里来,可参见 password_hash() 的例子 $hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; } ?>
以上例程会输出:
Password is valid!
PHP5.50 之前的密码哈希 API
安东尼·费拉拉(PHP原生密码哈希 API的开发者)为PHP5.5.0 以下的版本也提供了 ircmaxell/password-compat组件(https://packagist.org/packages/ircmaxell/password-compat)。
这个组件也实现了PHP密码哈希API中的所有函数,
password_get_info
password_hash
password_needs_rehash
password_verify
我们可以直接使用 Composer 把这个组件添加到我们的应用中就行了。例如,
composer require ircmaxell/password-compat
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章: