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