主要为了防止黑客利用用户常用密码库进行碰撞,加盐后黑客就无法通过此方法碰撞。
为什么要用哈希函数来加密密码
如果你需要保存密码(比如网站用户的密码),你要考虑如何保护这些密码数据,象下面那样直接将密码写入数据库中是极不安全的,因为任何可以打开数据库的人,都将可以直接看到这些密码。
解决的办法是将密码加密后再存储进数据库,比较常用的加密方法是使用哈希函数(Hash Function)。哈希函数的具体定义,大家可以在网上或者相关书籍中查阅到,简单地说,它的特性如下:
- 原始密码经哈希函数计算后得到一个哈希值
- 改变原始密码,哈希函数计算出的哈希值也会相应改变
- 同样的密码,哈希值也是相同的
- 哈希函数是单向、不可逆的。也就是说从哈希值,你无法推算出原始的密码是多少
有了哈希函数,我们就可以将密码的哈希值存储进数据库。用户登录网站的时候,我们可以检验用户输入密码的哈希值是否与数据库中的哈希值相同。
由于哈希函数是不可