我只想通過將註冊date_time作爲鹽來散列我的用戶密碼。我打算使用這個功能:雖然註冊獲取註冊日期時間和散列它
function create_hash($pass, $created_date, $hash_method = 'md5') {
// the salt will be the reverse of the user's created date
// in seconds since the epoch
$salt = strrev(date('U', strtotime($created_date));
if (function_exists('hash') && in_array($hash_method, hash_algos()) {
return hash($hash_method, $salt.$pass);
}
return md5($salt.$pass);
}
還有類似的密碼驗證方法。但我正在考慮註冊過程。在我的註冊表中,我只有用戶名和密碼字段,在我的mysql數據庫中,創建日期將自動添加。
但是,當第一次註冊時,我還需要用於散列密碼的creation_date?如何克服這一點?所以基本上我想象着在數據庫中插入數據進行鹽析之前,我必須獲取creation_date。這個怎麼做?
一種方法,我想,在我的登記表調用此函數之前,我會做到這一點:
$created_date = date("Y-m-d H:i:s");
$salt = strrev(date('U', strtotime($created_date));
但恐怕是有將是這種鹽的時間和CREATION_DATE時間之間的一小部分時間差的數據庫。如果是這樣,那麼我的password_validation將無法正常工作。
***我知道md5()是不安全的。所以我不需要關於md5或其他哈希算法的建議。我對醃製
我也有我的隨機鹽..我想使用用戶創建日期作爲第二個鹽 – oxvoxic 2014-10-03 07:11:14
看你有多少不同的函數來創建一個哈希密碼,我提供了雙哈希方法,不會消耗太多內存。你可以在你的查詢中發佈你的變量$ date_time並且不要調用一個mysql函數NOW(),並且時間上沒有什麼區別 – Snowman 2014-10-03 07:19:08
它也出現在我腦海中,我可以使用特殊字符作爲胡椒進行md5散列。特殊字符可能是製表鍵,esc鍵或多個空格?如果是這樣怎麼辦?它是這樣的:md5(''。$ text); – oxvoxic 2014-10-03 14:19:10