如何在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