预测未来的CRC价值

时间:2018-12-03 21:51:23

标签: hash cryptography crc crc32

以下代码显示了正向哈希中使用的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吗?

2 个答案:

答案 0 :(得分:1)

不。 Thing = BooleanExpression 接受初始CRC,对其应用消息,然后获得结果CRC。您需要消息。

如果您可以在不知道crc32()的情况下确定crc32('aaaa',-1382488763),那么aaaa函数为什么根本需要第一个参数?

如果仅通过未重复消息的CRC来确定是否可以计算消息重复的CRC,则为否。但是,如果您知道消息的CRC和消息的长度,那么可以,您可以计算该消息的两次或更多次重复的CRC,而无需知道消息本身。正如您在注释中所指出的那样,zlib中的crc32()就是这样做的。

答案 1 :(得分:0)

是的,从某种意义上讲可以。只有一个4字节值:“ AAAA”,它产生特定的校验和。因此有可能找到 if 这个值,例如您知道输出-例如通过迭代所有可能的字节输入。然后,可以通过再次提供前一条消息来扩展CRC32计算,从而猜测下一个输出。

注意:

  • 我在这里假设使用ASCII编码;
  • CRC32不是单向哈希,因此您可以在不恢复暴力的情况下计算有关输入消息的信息;
  • 我不清楚您为什么要重复初始输入消息,我希望知道:)