密码盐应该存储在数据库中自己的字段中吗?

时间:2010-12-19 21:34:21

标签: database security passwords

我一直在做很多研究,以确定存储我正在开发的系统的密码的最佳实践。到目前为止,我已经决定使用带有RNG的SHA512哈希为每个密码生成一个盐(显然是针对Rainbow Tables等的最佳实践)。

将密码存储在表中两个单独字段中的过于简单,以确定数据库中的密码表示(有PasswordHash字段和PasswordSalt字段) ?通过默默无闻看起来似乎是安全性,但我想将盐和密码哈希存储在一个连接在一起的字段中。

这会“帮助”吗?

2 个答案:

答案 0 :(得分:5)

这并不重要。盐不会泄露任何秘密,事实上,它有助于保守秘密。如果您想给数据库设计师朋友留下深刻印象,请将其保存在自己的字段中。如果你想给你的优化朋友留下深刻印象,请将其与哈希保持一致。这真是个风格问题。

关于盐;您可能希望使其足够长以防止彩虹表攻击:http://en.wikipedia.org/wiki/Rainbow_table#Defense_against_rainbow_tables

答案 1 :(得分:3)

单独存放。

记住您正在保护的内容:该方案是有人获取数据库的副本,因此可以对字段执行彩虹表查找,如果没有盐渍的话。

攻击者是否知道盐并不重要;它只是阻止他使用预先生成的彩虹表。