如何在PHP中解密密码哈希?

我需要解密密码。密码已使用password_hash功能加密。

$password = 'examplepassword';

$crypted = password_hash($password, PASSWORD_DEFAULT);

现在,我们假设它$crypted存储在数据库中(有一个“用户”表,其中包含用户名,密码等),我需要登录:我必须查看用户输入的密码是否与存储在其中的加密密码匹配。数据库。

这是SQL代码…

$sql_script = 'select * from USERS where username="'.$username.'" and password="'.$inputpassword.'"';

…但未$inputpassword加密,因此不等于表用户的密码字段中存储的内容…

所以,有一个使用password_hash?后解密的功能。还是应该更改我的加密方法?或者还有什么?

回答:

Bcrypt是一种单向哈希算法,您无法解密哈希。使用password_verify检查密码是否与存储的哈希匹配:

<?php

// See the password_hash() example to see where this came from.

$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq';

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

echo 'Password is valid!';

} else {

echo 'Invalid password.';

}

?>

在您的情况下,仅使用用户名运行SQL查询:

$sql_script = 'select * from USERS where username="'.$username.'"';

并使用类似于上面示例的代码在PHP中进行密码验证。

编辑:以这种方式构造查询是非常危险的。如果您无法正确地转义输入,则代码将容易受到SQL注入攻击的攻击。见这对如何防止SQL注入SO答案。

以上是 如何在PHP中解密密码哈希? 的全部内容, 来源链接: utcz.com/qa/426700.html

回到顶部