【发布时间】:2012-01-03 19:18:33
【问题描述】:
我想知道当与 salt 一起使用时,散列哈希的过程是否有助于阻止对它的攻击(我认为是蛮力)。所以我的代码:
function hash_password($password, $salt, $site_key) {
$hash = hash('sha512', $password . $salt . $site_key);
for ($i=0; $i<1000; $i++) {
$hash = hash($hash);
}
return $hash;
}
据我所知,我的代码是安全的,因为它通过使用盐来阻止彩虹表攻击,并通过迭代哈希来阻止暴力攻击。
这种迭代实际上会使蛮力攻击变得更加困难吗? 如果是这样,它会对性能产生多大影响? (哈希1000次需要多长时间,听说有人说你应该迭代哈希直到需要200ms)
这样做是否会模拟 bcrypt 等算法的行为?
【问题讨论】:
-
我看到大型公司的 Web 应用程序安全要求规定密码哈希循环需要执行一整秒的服务器时间。我花了 10,000 次 md5 迭代来满足这个要求。 o_O
-
Double hashing security 的可能重复项 ... 以下是人们不这样做的一些原因:Why do people think that this is bad way to hash passwords?
-
这个循环是完全多余的。您只是在计算相同的哈希 1000 次。
-
@WillVousden 现在是我的代码吗?