哈希函数的周期性
Periodicity of hash functions
考虑简单的散列函数:HASH = INPUT % 4
。这个函数是周期性的,因为如果我们用序列号 0, 1, 2, 3, 4, 5, ...
调用它,生成的散列序列将具有四个周期:0, 1, 2, 3, 0, 1, 2, 3, 0, ...
.
我的问题是现代加密哈希函数(例如 SHA256)在这个意义上是否具有周期性?换句话说,是否存在一些整数 0 <= n
和 0 < 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 有很多位,这是不可行的。
考虑简单的散列函数:HASH = INPUT % 4
。这个函数是周期性的,因为如果我们用序列号 0, 1, 2, 3, 4, 5, ...
调用它,生成的散列序列将具有四个周期:0, 1, 2, 3, 0, 1, 2, 3, 0, ...
.
我的问题是现代加密哈希函数(例如 SHA256)在这个意义上是否具有周期性?换句话说,是否存在一些整数 0 <= n
和 0 < 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 有很多位,这是不可行的。