哈希函数的周期性

Periodicity of hash functions

考虑简单的散列函数:HASH = INPUT % 4。这个函数是周期性的,因为如果我们用序列号 0, 1, 2, 3, 4, 5, ... 调用它,生成的散列序列将具有四个周期:0, 1, 2, 3, 0, 1, 2, 3, 0, ....

我的问题是现代加密哈希函数(例如 SHA256)在这个意义上是否具有周期性?换句话说,是否存在一些整数 0 <= n0 < k 使得 HASH(n + b) = HASH(n + b + ak) 对于 [0, k - 1] 中的所有整数 b 和所有正整数 a?例如,序列 SHA256(0), SHA256(1), SHA256(2), SHA256(3), ... 在某个点之后是否是周期性的?

绝对不是。如果是这样的话,找到碰撞将是微不足道的。加密散列函数的强度由找到 Hash(a) == Hash(b) 的难易程度来定义。理想情况下,您需要找到 Hash(b) 的所有值才能找到冲突,如果 Hash 有很多位,这是不可行的。