将数据库中的哈希密码与PHP MYSQLI中的用户输入进行比较


Comparing Hashed Password in the database to user Input in PHP MYSQLI

如何将存储在数据库中的散列密码与用户输入的密码进行比较,我需要这样做,以便用户可以登录。

这是我如何散列我的密码(使用 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 结果,通常最终是一个值的哈希与另一个相同值的哈希不匹配。