2015-12-20 3 views
0

Метод checkPassword() возвращает false каждый раз, хотя я знаю, что это правильно. Я использовал тот же метод для хэширования/соления, как и для проверки, и я убедился, что все так, как должно быть, но оно все равно возвращает false. Я использую 'Bcrypt-PHP-класс' здесь хэш всех https://github.com/cosenary/Bcrypt-PHP-Class Вот как я хэшируюсь пароль:Ошибка входа в PHP при проверке хэша/соленого пароля

$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); 
} 
+0

вы также можете публиковать функции? – Juakali92

ответ

0

Почему вы не используете password_hash()? (http://php.net/manual/fr/function.password-hash.php)

И посмотрите в вашу БД, если поле пароля является VARCHAR и минимум 60 символов (для password_hash, не знаю, для Bcrypt-PHP-класс)

EDIT: Bcrypt-PHP-класса создайте хэш хэш-символов 60, проверьте, имеют ли ваши поля этот минимум