PHP登录问题时,检查哈希/盐密码


PHP Login issue when checking hashed/salted password

我的checkPassword()方法每次都返回false,尽管我知道它是正确的。我使用了与检查相同的哈希/盐析方法,并确保一切正常,但它仍然返回false。我正在使用此处的"Bcrypt PHP类"对所有内容进行哈希https://github.com/cosenary/Bcrypt-PHP-Class以下是我如何散列密码:

$password = Bcrypt::hashPassword($_POST['password']);

以下是我如何检查密码:

$check = Bcrypt::checkPassword($password, $user['password']);

($user是用户信息的数组,如用户名、密码、电子邮件等。)即使在检查了所有内容都是正确的之后,$check仍然是错误的。也没有错误。提前感谢任何能帮助我的人。Bcrypt方法:

public static function checkPassword($password, $storedHash) {
if (version_compare(PHP_VERSION, '5.3') < 0) {
  throw new Exception('Bcrypt requires PHP 5.3 or above');
}
self::_validateIdentifier($storedHash);
$checkHash = crypt($password, $storedHash);
return ($checkHash === $storedHash);
}
public static function hashPassword($password, $workFactor = 0) {
if (version_compare(PHP_VERSION, '5.3') < 0) {
  throw new Exception('Bcrypt requires PHP 5.3 or above');
}
$salt = self::_genSalt($workFactor);
return crypt($password, $salt);
}

为什么不使用password_hash()?(http://php.net/manual/fr/function.password-hash.php)

如果密码字段是varchar并且至少有60个字符(对于password_hash,对于Bcrypt PHP类不知道),请查看您的数据库

编辑:Bcrypt PHP类创建一个60个字符的哈希,检查您的字段是否具有此最小