检查散列/加密密码

时间:2015-12-20 14:51:35

标签: php hash passwords salt account

我的checkPassword()方法每次都返回false,即使我知道它是对的。我使用相同的方法进行散列/腌制,就像我检查一样,我确保一切都是应该的方式,但它仍然返回false。 我正在使用' Bcrypt-PHP-Class'发现这里哈希所有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);
}

1 个答案:

答案 0 :(得分:0)

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

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

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