使用password_hash()比较寄存器上的密码

Mig*_*ezv 3 php mysql php-password-hash

我正在使用 password_hash 函数来保护登录页面上的用户密码。但是,在注册页面上,我要求用户提示两次密码,但我无法比较两个哈希值,因为即使密码相同,它们也是不同的。

我应该将两个密码作为字符串进行比较,然后对密码进行哈希处理吗?或者最好的做法是什么?

Tor*_*dek 5

用于password_hash对密码进行哈希处理,如有必要,生成新的盐(您可以传递自己的盐,但这不是必需的),而该password_verify函数用于比较它们(该函数使用与哈希一起存储的盐,以便进行适当的比较)。

创建密码时,用户以明文形式提供两次密码,因此您需要检查的是$password1 == $password2.

如果您想验证从数据库获取的密码,您需要执行以下操作:

$password_hash = <some database query>
if (password_verify($password, $password_hash)) {
    login_success();
} else {
    login_failure();
}
Run Code Online (Sandbox Code Playgroud)

您可以以同样的方式比较注册页面中的密码,但没有必要。