如何将存储在数据库中的散列密码与用户输入的密码进行比较,我需要这样做,以便用户可以登录。
这是我如何散列我的密码(使用 phps crypt 方法)
$hashedpass = crypt($password);
$sql = "INSERT INTO accounts (username,password,email) VALUES('{$username}','{$hashedpass}','{$email}')";
$conn->query($sql);
这就是我将它们与用户输入进行比较的方式
$username = trim($_POST['username']);
$password = crypt($_POST['password']);
$sql = "SELECT * FROM accounts WHERE username = '{$username}' && password = '{$password }'LIMIT 1";
echo "$sql";
$rs = $conn->query($sql);
$numRows = $rs->num_rows;
if($numRows == 1){
echo "you may log in";
}
我 100% 确定我输入的密码正确,但问题是 mysql 没有显示结果,
看看 crypt 的 PHP 文档,因为你没有提供 SALT 值,你会得到 strage 结果,通常最终是一个值的哈希与另一个相同值的哈希不匹配。