如何加點鹽(salt)?
為了加強MD5的安全性,從而加入了新的算法部分即加鹽值,加鹽值是隨機生成的一組字符串,可以包括隨機的大小寫字母、數字、字符,位數可以根據要求而不一樣,使用不同的加鹽值產生的最終密文是不一樣的:
1).首先我們得到的是明文的hash值
2).進行計算獲取MD5明文hash值
3).隨機生成加鹽值并插入
4).MD5插入加鹽值得到的hash
5).得到最終的密文
看一個簡單的加salt函數:
/** * MD5加SALT函數 * by http://www.phpddt.com */function do_hash($psw) { $salt = 'fdsafagfdgv43532ju76jM'; //定義一個salt值,最好夠長,或者隨機 return md5($psw . $salt); //返回加salt后的散列}
注意:
如果你是隨機生成salt值就得放入數據庫,不要用time()
時間戳啥的,那樣別人不就可以枚舉了嘛,如果你嫌麻煩,可以配置一個復雜的salt值,如上,兩種方法各有優點。
另一種復雜點加密方法:
function PassCrypt($ManagerPassword){$ManagerPassword=md5($ManagerPassword);$Salt=substr($ManagerPassword,-1,3);$ManagerPassword=crypt($ManagerPassword,$Salt);Return $ManagerPassword;}
這樣先把密碼用MD5加密,然后截取其結果的一段,再用crypt加密,因為這兩個加密函數都是單向的,所以就沒有人能破解的了了,而且加密后的最終密碼是13位的,無論誰拿到手都不知道該怎么破解了,在密碼驗證時只需要將原始密碼用加密函數再加密一編進行匹配就行了。
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
新聞熱點
疑難解答