不知道大家知不知道,如果在开发的时候直接对密码进行哈希处理,黑客可以通过查找哈希值字典(比如MD5密码破解网站)得到一个用户的密码。但如果加盐,就困难多了。即使拿到盐和最终密文,破解起来也是相当麻烦的。下面小编就通过这篇文章一起学习吧。
如何加点盐(salt)?
为了加强MD5的安全性,增加了一个新的算法部分,盐值。Salt值是随机生成的一组字符串,可以包含随机的大小写字母、数字和字符。根据需要,位数可以不同,使用不同的salt值生成的最终密文也不同:
1).首先,我们得到明文的哈希值。
2)计算得到MD5明文哈希值
3).随机生成加盐值并插入。
4).MD5插入加盐得到的哈希。
5)得到最终的密文。
看一个简单的加salt函数:
/**
* MD5加盐函数
* http://www.phpddt.com
*/
函数do_hash($psw) {
$ salt=' fdsafagfdgv 43532 ju 76 JM ';//定义一个salt值,最好足够长或随机
返回MD5(PSW。$盐);//返回带salt的哈希。
}
注意:
如果你随机生成盐值,你必须把它放在数据库中。不要用time()时间戳什么的,别人可以枚举。如果嫌麻烦,可以配置一个复杂的盐值。如上所述,两种方法各有优势。
另一种复杂点加密方法:
函数PassCrypt($ManagerPassword)
{
$ manager password=MD5($ manager password);
$Salt=substr($ManagerPassword,-1,3);
$ manager password=crypt($ manager password,$ Salt);
返回$ ManagerPassword
}
这样密码用MD5加密,然后截取一段结果,再用crypt加密。因为这两个加密函数都是单向的,没人能破解。而且最后加密的密码是13位,所以不管谁拿到都不知道怎么破解。在验证密码时,他们只需要用加密功能加密原密码,然后再加密进行匹配即可。
总结
这就是本文的全部内容。希望这篇文章的内容能给你的学习或者工作带来一些帮助。有问题可以留言交流。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。