预测未来的 CRC 值
Predicting Future CRC Value
以下代码显示了在前向哈希中使用的 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 吗?
没有。 crc32()
采用初始 CRC,将消息应用于它,并获得生成的 CRC。您需要留言。
如果您可以在不知道 aaaa
的情况下确定 crc32('aaaa',-1382488763)
,那么为什么 crc32()
函数根本不需要第一个参数?
如果您想知道是否可以仅在给定未重复消息的 CRC 的情况下计算重复消息的 CRC,那么不能。但是,如果您知道消息的 CRC 和 消息的长度,那么是的,您可以在不知道消息本身的情况下计算该消息的两次或多次重复的 CRC。正如您在评论中指出的那样,这就是 zlib 中的 crc32_combine()
所做的。
是的,从某种意义上说,你可以。只有一个 4 字节的值:"AAAA" 产生特定的校验和。所以有可能找到这个值 if 你知道输出 - 例如通过遍历所有可能的字节输入。然后您可以通过再次提供上一条消息来扩展 CRC32 计算来猜测下一个输出。
备注:
- 我假设这里使用 ASCII 编码;
- 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 吗?
没有。 crc32()
采用初始 CRC,将消息应用于它,并获得生成的 CRC。您需要留言。
如果您可以在不知道 aaaa
的情况下确定 crc32('aaaa',-1382488763)
,那么为什么 crc32()
函数根本不需要第一个参数?
如果您想知道是否可以仅在给定未重复消息的 CRC 的情况下计算重复消息的 CRC,那么不能。但是,如果您知道消息的 CRC 和 消息的长度,那么是的,您可以在不知道消息本身的情况下计算该消息的两次或多次重复的 CRC。正如您在评论中指出的那样,这就是 zlib 中的 crc32_combine()
所做的。
是的,从某种意义上说,你可以。只有一个 4 字节的值:"AAAA" 产生特定的校验和。所以有可能找到这个值 if 你知道输出 - 例如通过遍历所有可能的字节输入。然后您可以通过再次提供上一条消息来扩展 CRC32 计算来猜测下一个输出。
备注:
- 我假设这里使用 ASCII 编码;
- CRC32 不是单向 散列,因此您可以计算有关输入消息的信息而无需恢复为蛮力;
- 我不清楚你为什么要重复初始输入消息,我希望你知道:)