問題
行ごとに 1 つの文字列を含むテキスト ファイルがあります (改行 \r\n)。このファイルは、2 つの異なる方法で CRC16 を使用して保護されています。
- 4096 バイトのブロックの CRC16
- 32768 バイトのブロックの CRC16
ここで、これらの 4096 バイト ブロックのいずれかを変更する必要があるため、(ブロック)
- 特定の文字列を含む
- テキストファイルのサイズを変更しません
- 元のブロックと同じ CRC 値を持つ (この 4k ブロックを含む 32k ブロックも同じ)
その制限を除いて、ファイル自体がそのフォーマットを壊さない限り、ブロックを満たすために必要な変更をブロックに加えることができます。最後のブロックではなく、完全に満たされた 4k ブロックのいずれかを使用するのが最善だと思います。
質問
その問題を解決するにはどうすればよいですか?私が思いつく最初のことは、ある種のブルートフォースですが、両方のCRC値が同じままになる変更を見つけるのに非常に時間がかかりませんか? おそらくそれを解決する数学的な方法はありますか?
数秒または最大で実行する必要があります。数分。