如何给MD5加上salt随机盐值

如何给MD5加上salt随机盐值

不知道大家知不知道,如果在开发的时候直接对密码进行哈希处理,黑客可以通过查找哈希值字典(比如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位,所以不管谁拿到都不知道怎么破解。在验证密码时,他们只需要用加密功能加密原密码,然后再加密进行匹配即可。

总结

这就是本文的全部内容。希望这篇文章的内容能给你的学习或者工作带来一些帮助。有问题可以留言交流。

如何给MD5加上salt随机盐值