2011-04-18 160 views
1

可能重复:
password hashing散列密码

什么是散列密码的最佳做法?

我做了以下内容:

$salt = 12345; 
$hash = hash("sha256", $_POST['password'] . $salt); 

是否有更好的解决方案和安全性?

回答

2

我个人建议使用bcrypt。主要原因是它很慢。这有助于减缓对散列的攻击。如果你使用密码加盐,如果你的哈希列表落入了错误的手中,这会使事情变得更加困难。

下面是详细解释了关于它的文章:
http://codahale.com/how-to-safely-store-a-password/

0

这种方法是安全的。使用salt值大大增加了破解加密的复杂性。为了最佳实践,我会使用大量的盐值。

+0

不是每个哈希使用相同的盐值。 – Wyzard 2011-04-18 15:50:16

+0

我认为这是一个给定的:) – GordyD 2011-04-18 15:55:10

0

这会更好地使用多轮。 PHP中的crypt()函数实现了这一点。

0

唾沫密码哈希的一点是盐对于每个存储的哈希应该是不同的。这样,攻击者不能对所有散列使用单个预计算哈希字典(他需要为每个盐值单独使用一个字典)。另外,具有相同密码的两个用户将不会具有相同的散列值,因此查看散列列表的人将无法判断用户的密码是否相同。

This other SO question有更多信息。

0

一个恒定的盐是没用的。相反,你应该使用一些有趣的东西,比如用户名或时间戳。

盐的整点是为了防止生日攻击,在这里他们散列一串不含盐的密码(或一个常数盐),并与存储的散列进行比较。

另外一个较慢的哈希算法总是最好增加暴力时间。