问题
我有一个文本文件,其中每行包含一个字符串(换行符 \r\n)。该文件使用 CRC16 以两种不同的方式进行保护。
- 4096 字节块的 CRC16
- 32768字节块的CRC16
现在我必须修改这些 4096 字节块中的任何一个,所以它(块)
- 包含特定字符串
- 不改变文本文件的大小
- 具有与原始块相同的 CRC 值(对于包含此 4k 块的 32k 块相同)
除了这些限制之外,只要文件本身不破坏其格式,我就可以对块进行填充所需的任何修改。我认为最好使用任何完全填充的 4k 块,而不是最后一个块,因为它可能真的很短。
问题
我应该如何开始解决这个问题?我想的第一件事是某种蛮力,但不是需要很长时间才能找到导致两个 CRC 值保持不变的变化吗?可能有一种数学方法可以解决这个问题吗?
它应该在几秒钟或最多时间内完成。一会儿。