【发布时间】:2019-05-05 06:16:40
【问题描述】:
以下代码显示了在前向散列中使用的 CRC32(我们使用持久上下文多次散列同一个项目):
In [1]: from zlib import crc32
In [2]: crc32('aaaa')
Out[2]: -1382488763
In [3]: crc32('aaaa',-1382488763)
Out[3]: -1081835450
In [4]: crc32('aaaa' * 2)
Out[4]: -1081835450
我的问题是:
给定-1382488763的已知初始crc,我们可以在不知道原始内容的情况下预测前向哈希的值吗?澄清一下...我可以仅从 -1382488763 得出 -1081835450 吗?
【问题讨论】:
-
有一些方法可以优化重复项的 crc 计算,但您的问题是在不知道重复项是什么的情况下是否可以这样做。
-
好的,重新阅读您的问题。所以基本上你在问:知道我已经输入了 4 个元素,并且知道结果,我可以确定地重建输入值
aaaa吗?请注意,crc(32('aaaa', -1382488763)对我没有任何意义。 CRC32 有 一个 输入参数。如果您有两个,请说明您的意思。 -
@MaartenBodewes 根据zlib documentation 它被用作生成运行校验和的起始值。
-
@MaartenBodewes
crc32('aaaa',-1382488763)表示使用第二个参数作为初始CRC,并通过它运行消息aaaa。所以它应该给出与aaaaaaaa的 CRC 相同的东西,Out[4]确实证明了这一点。
标签: hash cryptography crc crc32