有人可以为我澄清生日效应吗?

时间:2010-05-04 16:02:46

标签: hash birthday-paradox

请帮助解释维基百科中描述的生日效果:

  

生日攻击的工作原理如下:

     
      
  1. 选择任何消息m并计算h(m)。
  2.   
  3. 更新清单L.检查h(m)是否在列表L中。
  4.   
  5. 如果(h(m),m)已经在L中,则找到了冲突消息对。   否则保存对(h(m),m)   列出L并返回步骤1.
  6.         

    从生日悖论中我们知道我们可以期待找到一个   匹配条目,执行后约   2 ^(n / 2)个哈希评估。

以上是否意味着通过上述整个循环的2 ^(n / 2)次迭代(即2 ^(n / 2)返回到步骤1),或者它是否意味着对各个项目的2 ^(n / 2)次比较已经在L?

1 个答案:

答案 0 :(得分:4)

这意味着循环中的2 ^(n / 2)次迭代。但请注意,此处L不是正常列表,而是将h(m)映射到m的哈希表。因此,每次迭代平均只需要一个常数(O(1))的比较,总共会有O(2 ^(n / 2))个比较。

如果L是正常数组或链表,则比较次数会大得多,因为您需要在每次迭代时搜索整个列表。但这对于实现此算法来说是一种糟糕的方式。