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