php 的password_hash 原理是什么

如题,php 中的 password_hash 加密密码时如果采用随机盐值, 那么验证密码的时候是如何确定密码对应的盐值的

阅读 9.1k
4 个回答

clipboard.png
注意 password_hash() 返回的哈希包含了算法、 cost 和盐值。 因此,所有需要的信息都包含内。使得验证函数不需要储存额外盐值等信息即可验证哈希。
<?php
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

if (password_verify('test', $hash)) {

echo 'Password is valid!';

} else {

echo 'Invalid password.';

}
?>

密码其实可以分开两段,前面一段就是salt

通过password_verify()来验证,传入密码和存储的哈希值,若正确返回一个布尔值 TRUE,否则返回 FALSE

if (password_verify($password, $hash)) {
    // Correct Password
}

很简单。。。需要把salt一同存到数据库。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题