SHA-1 的输出是否可能以零字节结尾?

Is it possible for the output of SHA-1 to end in zero bytes?

sha1 哈希是否可以以零字节结尾?

Python代码

hash = haslib.sha1();
hash.update(STRING THAT RESULTS IN ZERO BYTES);
if hash.digest().endswith('\x00\x00\x00'):
....

是的,由于散列函数输出应该是均匀分布的,因此您获得任何受支持输出的机会非零。看到最后 24 位(3 字节)为零的机会是 1.0/(2**24)5.9 * 10<sup>-8</sup>。平均而言,您必须尝试 223 个随机字符串才能找到具有此 属性 的字符串。由于散列运算非常快,因此这不会超过几分钟(尽管 Python 通常可能有点慢)。