2012-04-22 137 views
2

我一直在环顾四周,为了安全地存储密码,似乎有很多不同的方式,比其他人更受欢迎。假设我从某种意义上来说并不使用像crypt()这样的工作,我应该如何存储随机生成的盐以便与sha256或sha512一起使用?我想过如何做到这一点,但我坚持如何有效地工作。将它们全部存储在数据库中并且不得不使用它们似乎效率低下。我很想知道是否实际上有一种通常使用的方法,或者这是否是唯一的方法?提前致谢。如何在数据库中存储为哈希创建的盐?

回答

4

通常,salt与密码哈希存储在同一列或相邻列中。对此没有任何不足之处。为每个密码使用不同的盐是什么使你的密码系统健壮。

+0

好吧,我明白了。但是,如果他们有盐,难道不会让暴力更容易吗?拿着手中的盐,所有需要做的事情就是把盐加上用来强奸它的任何东西。我认为将它与所有的盐一起储存在一个单独的表中会更有意义。 – Andy 2012-04-22 07:15:17

+0

@Andy:如何把它放在一个单独的桌子使它更安全?盐不应该是秘密的;它只是为每个用户提供一个有效的独特散列函数。防止暴力攻击的方法是使用像bcrypt这样的缓慢散列函数。 – 2012-04-22 07:19:51

+0

@Andy,有了盐,就很容易找到与哈希碰撞所需的数据。同样的数字运算仍然必须发生。分开腌制每个密码仅意味着如果他们要找到碰撞并使用它来进入您的网站,他们只有一个帐户,而不是全部。有盐没有帮助......它只是在生成散列时使用盐。 – Brad 2012-04-22 07:21:54