散列密码
问题描述:
可能重复:
password hashing散列密码
什么是散列密码的最佳做法?
我做了以下内容:
$salt = 12345;
$hash = hash("sha256", $_POST['password'] . $salt);
是否有更好的解决方案和安全性?
答
我个人建议使用bcrypt。主要原因是它很慢。这有助于减缓对散列的攻击。如果你使用密码加盐,如果你的哈希列表落入了错误的手中,这会使事情变得更加困难。
下面是详细解释了关于它的文章:
http://codahale.com/how-to-safely-store-a-password/
答
它在另一个答案我要找的引用,但我会用这样的: http://www.openwall.com/phpass/
的这个问题,其他版本:How can I store my users' passwords safely?
答
这种方法是安全的。使用salt值大大增加了破解加密的复杂性。为了最佳实践,我会使用大量的盐值。
答
唾沫密码哈希的一点是盐对于每个存储的哈希应该是不同的。这样,攻击者不能对所有散列使用单个预计算哈希字典(他需要为每个盐值单独使用一个字典)。另外,具有相同密码的两个用户将不会具有相同的散列值,因此查看散列列表的人将无法判断用户的密码是否相同。
This other SO question有更多信息。
答
一个恒定的盐是没用的。相反,你应该使用一些有趣的东西,比如用户名或时间戳。
盐的整点是为了防止生日攻击,在这里他们散列一串不含盐的密码(或一个常数盐),并与存储的散列进行比较。
另外一个较慢的哈希算法总是最好增加暴力时间。
不是每个哈希使用相同的盐值。 – Wyzard 2011-04-18 15:50:16
我认为这是一个给定的:) – GordyD 2011-04-18 15:55:10