我有一個問題得到的密碼被存儲在MySQL中以匹配登錄密碼使用salt。PHP/MYSQLi問題使用鹽密碼驗證
這裏是我的密碼生成代碼:
$hash = hash('sha256', $password);
function createSalt()
{
$text = md5(uniqid(rand(), true));
return substr($text, 0, 3);
}
$salt = createSalt();
$password = hash('sha256', $salt . $hash);
這裏是我的登錄頁面代碼:
$userData = $result->fetch_array(MYSQL_ASSOC);
$hash = hash('sha256', $password);
$password = hash('sha256', $userData['salt'] . $hash);
//$hash = hash('sha256', $userData['salt'] . hash('sha256', $password));
if($password != $userData['Password']) // Incorrect password. So, redirect to login_form again.
有沒有錯誤,創造了MySQL的密碼(字段填充與即0d02a88c1e1057a64df6b3fed4c6ad64e228313b803e9f9b36 ...
雖然登錄創建類似:51839f9a15dac1f26825f4cd5d2ecf7ae83ea88d440415b04fb6ae41c3a0566f
只是不確定問題出在哪裏。在此先感謝,我對PHP很陌生。
你不能這樣做slapdash。發佈類似於你的代碼的東西沒有幫助。您的第一步應該是驗證數據庫中的哈希密碼與您的預期結果相符。然後確認您的流程中的每一步都符合您的期望。 – 2014-11-23 18:59:14
你不是總是使用不同的鹽來創建密碼嗎?這是一個問題。另一個你可能不會把'salt'信息放到'$ userData' – 2014-11-23 19:02:36
@mike W什麼是slapdash?很明顯,我給出的例子是我的mysql數據庫中的EXACT,以及登錄頁面創建的內容。但是,如果我說這些是我的結果,那麼你應該把一些像「好的,每個用戶都不能得到相同的結果」這樣的居高臨下的東西放在一起。而且我已經根據我對PHP的理解儘可能地追蹤了它。感謝您非常不尋常的評論。 – 86Tango 2014-11-23 19:07:59