【发布时间】:2013-01-17 16:37:11
【问题描述】:
我知道,如果我们只是散列密码,黑客可以使用预先计算的散列密码表并将其与实际的散列密码表进行比较。据我了解,如果我们在散列之前添加一个随机字符串作为盐,预先计算的散列表将不起作用。
现在我的问题是,假设用户密码是“password”,我在其中添加 999 并在保存之前对字符串“password999”进行哈希处理。现在当用户返回我的站点时,我怎么知道我需要在他的密码中添加 999,然后才能将其与数据库中的散列值进行比较?我是否维护一个单独的表,其中包含每个用户名的所有盐?
【问题讨论】:
-
你可能有盐从其他恒定的用户数据(如 id)计算出来,或者独立存储,后者更安全
-
2Alexey:我认为随机盐的生成和存储比从其他常量计算更安全。