为什么重组会让它更安全?

时间:2012-02-09 14:20:49

标签: security hash

读一本书说:反复重复以获得更多计算密集的字节序列。如果你重复100次,那么可能需要1个月的字典攻击需要8年。为什么?我不明白。谁能解释一下?

1 个答案:

答案 0 :(得分:1)

假设你有一个像这样的散列函数:

password_hash = MD5(password)

给定一个哈希值,比如说5f4dcc3b5aa765d61d8327deb882cf99,你首选的技术是使用上面的函数生成字典中所有单词的哈希值,然后将password_hash与想要反转的词进行比较。

现在假设您将散列函数更改为

   password_hash = password
   for i = 1 to 100
     password_hash = MD5(password_hash)
   next

作为攻击者,这次你需要在字典中对每个单词进行100次散列,以便将它与你想要暴力的给定散列进行比较。因此,如果您多次对密码进行哈希处理,攻击者需要更长时间才能强制执行给定哈希。

正是出于这个目的,像MD5和SHA系列这样的快速哈希算法不太适合散列密码。您可以阅读http://codahale.com/how-to-safely-store-a-password/以了解像bcrypt这样的慢速算法如何更适合密码哈希。