使用哈希作为盐的散列?

Pet*_*y B 1 database security hash

假设用户注册了您的站点,您将他们选择的密码哈希,然后将该哈希值用作盐并使用该盐重新密码.

例:

String hash1 = MD5(password);
String endHash = MD5(hash1 + password);
Run Code Online (Sandbox Code Playgroud)

然后将endHash存储在您的数据库中.如果我的数据库被压缩,这个有效的反对彩虹表会攻击吗?或者我错过了一些容易打破的东西?

Ste*_*dit 7

这是一个关键的强化(http://en.wikipedia.org/wiki/Key_strengthening),这是一个很好的技术,但不能替代实际的盐.它不会保护您免受使用此双哈希函数编写的彩虹表.


str*_*ika 5

腌制的目的是防止使用巨大的预先计算的表格.使用此方法,可以计算任何密码的哈希值,而无需访问您的数据库.您应该存储一个随机值并将密码和该值一起散列.