2015-12-20 70 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仍然是錯誤的。也沒有錯誤。 非常感謝任何能夠幫助我的人。 加密方法:

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類)

編輯: Bcrypt-PHP級創建一個60個字符的散列,檢查你的字段是否有這個最小值