Double Hashing肯定能提供比仅1层散列更多的安全性,但这是否意味着它更具抗冲突性?这个问题用更多的数学形式: 如果H是一个抗冲突哈希函数,对于某些x仍然是抗冲突的是H(H(x))吗?
答案 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))要小于或等同,因为