我在使用bcrypt哈希方法和mysql时遇到问题。我正在使用 this answer 中的 Bcrypt
类.
我正在创建登录脚本并检查密码是否为 正确的。我正在比较输入的密码和散列的密码 来自数据库的密码。
$username= $_POST['username']; //username from input
$pass= $_POST['pass']; //username from input
$query= mysql_query("SELECT pass FROM users WHERE username='$username'");
$row= mysql_fetch_row($query);
$row[0];// hashed password, I echo $row[0] and it shows correct hashed password
$bcrypt = new Bcrypt(15);
$isGood = $bcrypt->verify($pass, $row[0]);
if ($isGood){
echo "Authentication succeeded";
}
else {
echo"Authentication failed";
}
即使 $pass 是正确的,我总是得到“身份验证失败”。 有什么想法,可能有什么问题吗?
提前谢谢您。
最佳答案
users
表中的 pass
列不够宽,无法存储完整的哈希值;它的宽度至少应为 60 个字符,即 VARCHAR(60)
。
顺便说一句,你应该看看 PasswordLib也由 ircmaxell 编写和维护,它也很好地支持 Bcrypt。
关于php - 验证失败,即使密码正确,使用 bcrypt 哈希方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953381/