给MD5加上salt(随机盐值)
作者:MJ 发布于:2016-8-10 14:01 Wednesday
如果直接给密码散列,黑客可以通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。加上salt后就会难上很多,即便是你获得了其中的salt和最终密文,破解也是相当麻烦的。如何加点盐(salt)?
为了加强MD5的安全性,从而加入了新的算法部分即加盐值,加盐值是随机生成的一组字符串,可以包括随机的大小写字母、数字、字符,位数可以根据要求而不一样,使用不同的加盐值产生的最终密文是不一样的:
1).首先我们得到的是明文的hash值
2).进行计算获取MD5明文hash值
3).随机生成加盐值并插入
4).MD5插入加盐值得到的hash
5).得到最终的密文
看一个简单的加salt函数:
注意:
如果你是随机生成salt值就得放入数据库,不要用time()时间戳啥的,那样别人不就可以枚举了嘛,如果你嫌麻烦,可以配置一个复杂的salt值,如上,两种方法各有优点。
另一种复杂点加密方法:
这样先把密码用MD5加密,然后截取其结果的一段,再用crypt加密,因为这两个加密函数都是单向的,所以就没有人能破解的了了,而且加密后的最终密码是13位的,无论谁拿到手都不知道该怎么破解了,在密码验证时只需要将原始密码用加密函数再加密一编进行匹配就行了。
发表评论: