以下代码显示了正向哈希中使用的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吗?
答案 0 :(得分:1)
不。 Thing = BooleanExpression
接受初始CRC,对其应用消息,然后获得结果CRC。您需要消息。
如果您可以在不知道crc32()
的情况下确定crc32('aaaa',-1382488763)
,那么aaaa
函数为什么根本需要第一个参数?
如果仅通过未重复消息的CRC来确定是否可以计算消息重复的CRC,则为否。但是,如果您知道消息的CRC和消息的长度,那么可以,您可以计算该消息的两次或更多次重复的CRC,而无需知道消息本身。正如您在注释中所指出的那样,zlib中的crc32()
就是这样做的。
答案 1 :(得分:0)
是的,从某种意义上讲可以。只有一个4字节值:“ AAAA”,它产生特定的校验和。因此有可能找到 if 这个值,例如您知道输出-例如通过迭代所有可能的字节输入。然后,可以通过再次提供前一条消息来扩展CRC32计算,从而猜测下一个输出。
注意: