双重散列是否具有抗冲击性?

时间:2014-12-02 18:09:49

标签: hash cryptography collision hash-function hash-collision

Double Hashing肯定能提供比仅1层散列更多的安全性,但这是否意味着它更具抗冲突性?这个问题用更多的数学形式: 如果H是一个抗冲突哈希函数,对于某些x仍然是抗冲突的是H(H(x))吗?

2 个答案:

答案 0 :(得分:1)

事实上,由于内部H的输出是有限的,因此抗冲击性可能更差。

例如,取函数H,它映射自 {0,1} n →{0,1} n 。 (我们将 x 限制为 {0,1} n 以便于查看。)让我们说有< em> a , b 来自 {0,1} n c = H(a)= H( b)中。这意味着 H(c)= H(H(a))= H(H(b))。当您在第一次转换中发生碰撞时,您无法取消它。

如果您在 {0,1} n 中没有发生碰撞,那么第二次转换的执行方式相同。

由于我们通常将散列函数称为 {0,1} * →{0,1} n ,因此必然存在第一次转型和第二次转型中的碰撞可能会使情况更糟。

答案 1 :(得分:1)

原则上,得到的散列函数H(H(x))要小于或等同,因为

  1. 对于散列函数H(x),对于每个N唯一的预映像,假设存在一个碰撞。这意味着有两个哈希相似,而H(H(x))不会使它不同。
  2. 对于散列函数H(x),对于每个N唯一的预映像,假设存在一个碰撞。对于H(H(x))也是如此,因为H(H(x))只不过是H(固定长度的字符串)。这使得碰撞的可能性更大。