我修改了我的舊帖子。我嘗試了crypt()函數,現在嘗試使用password_hash()和password_verify()來驗證來自數據庫的加密密碼,但在每次調用時,password_hash()函數會回退不同的加密字符串,並且password_verify()無法匹配它。使用crypt()和password_hash()函數進行加密後,密碼不匹配
這就是我如何做到這一點。
//please ignore the syntax error if any
$data = '11';
$dbpass = password_hash($data, PASSWORD_BCRYPT);
echo $dbpass; // displays the random strings on each page refresh.
將密碼保存到數據庫後,在登錄過程中沒有得到匹配。以下是我的實際功能。
private function process_data($password){
$password = __STR.$password.__STR;
return password_hash($password, PASSWORD_BCRYPT);
}
private function processed($login_password, $dbpassword){
$login_password = __STR.$login_password.__STR;
return password_verify($login_password, $dbpassword);
}
在爲密碼創建散列字符串的每個函數調用中,該函數下次返回不同的字符串。
請仔細閱讀爲什麼你不應該使用MD5哈希密碼:http://www.php.net/manual/en/faq.passwords.php – Tchoupi
我相信(在許多地方已經閱讀)是更好的做法給每個密碼自己的鹽。 – Ethan
同意你的意見。我已經看到了MD5加密的反向在互聯網上很容易獲得。但是我試圖在其中添加一個鹽讓黑客很難找出這個密碼是什麼。這不是一個好主意嗎?我一直在尋找專家意見。 –