【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>
1 盐值哈希的基本概念:
哈希密码利用特定的哈希函数将明文密码转换为密文。然而,这样的密码也不是非常安全的,黑客可以通过字典、彩虹表(网上就可以免费下载)对这种密码进行暴力破解,所以单纯的哈希密码还不足以应付安全问题。所以需要加入盐值(salt value)。
带盐值的哈希密码,就是在原始密码的基础上添加一个“盐值”,然后对新生成的明文进行哈希,得到的密码密文,就是带盐值的哈希密码。
2 工作原理:
带盐值的哈希密码算法设计思想:
在首次创建密码和修改密码时:
1)将用户提供的密码和系统生成的一个比较复杂的附加码(即盐值)进行结合,对结合的结果进行哈希运算;
2)然后系统为该用户随机生成一个指定长度的字节序列,把这个序列和刚刚哈希运算的结果进行结合,再进行哈希运算;
3)哈希结果与第二个盐值结合,得到最终的密文。存入数据库。

当用户登录时,相应的验证过程是:
1)用户提供用户名和密码;
2)系统通过用户名找到与之对应的Hash值和Salt值;
3)系统将Salt值和用户提供的密码连接到一起;
4)对连接后的值进行散列,得到Hash';
5)比较Hash和Hash'是否相等,相等则表示密码正确,否则表示密码错误。

参考资料:
http://blog.sina.com.cn/s/blog_64ffd1280101ehro.html
http://blog.csdn.net/dingzhun/article/details/7044221
来源:oschina
链接:https://my.oschina.net/u/2348884/blog/407056