安全存储密码(哈希)的最佳方法是什么?

时间:2012-06-21 11:02:59

标签: security hash saltedhash

现在很多网站被黑了,密码哈希被盗了。 即使像LinkedIn这样的大型网站也没有安全存储密码(仅限md5)。

现在是我的问题,什么是足够安全的哈希密码方法?

目前我正在使用它:

sha512(sha512(sha512(password) + salt));

这足够安全吗?

5 个答案:

答案 0 :(得分:1)

hash_hmac('sha512', $data , $key);

会很棒。最好使用$ key作为salt使用至少60个字符。

答案 1 :(得分:1)

很难说哪一个最好,但安全的赌注是BCrypt算法。

  

BCrypt不是那里最好的算法;但是,它对于绝大多数用例来说已经足够了,并且与基本的哈希和盐方法一样,即使不容易实现,也很容易实现。 BCrypt与众不同的是,它采用了Blowfish算法,而不是更典型的SHA- *算法,它具有并行速度慢得多的优势。由于用户一次登录一次,这使得测试众多密码的攻击者更难以击败算法。

更多信息:http://davismj.me/blog/bcrypt/

答案 2 :(得分:0)

是的,这还不够安全。我个人认为最后一次sha512通话没用,但我知道意见不同。

当然,只要无法使用蛮力策略猜测密码,这就是安全的。如果用户选择4个字母的密码或其妻子的名字,则不会有任何哈希值可以保护您。

答案 3 :(得分:0)

这取决于你的盐。您是否为每个用户生成了独特的盐?盐不是常数,如果每个密码都使用相同的盐进行哈希处理,那么您就会浪费时间。

我建议使用bcrypt而不是sha512 / salt方法,它更难以暴力:http://krebsonsecurity.com/2012/06/how-companies-can-beef-up-password-security/

答案 4 :(得分:0)

使用现在使用的盐对提高安全性非常有用,我强烈建议为每个用户使用随机盐。恕我直言,你将哈希用户密码的时间越多(你可以通过在每次散列之前添加盐来提高安全性),它就越安全。我使用for循环重复256次来散列密码,这可能被认为是对未来几年的暴力行为的安全。

有点偏离主题,但我建议也要关注会话劫持(比如重新生成ssids等等)