Проблема
У меня есть текстовый файл, который содержит одну строку в строке (разрыв строки \r\n). Этот файл защищен с помощью CRC16 двумя различными способами.
- CRC16 блоков по 4096 байт
- CRC16 блоков по 32768 байт
Теперь мне нужно изменить любой из этих 4096-байтовых блоков, чтобы он (блок)
- содержит определенную строку
- не изменяет размер текстового файла
- имеет то же значение CRC, что и исходный блок (то же самое для блока 32 КБ, который содержит этот блок 4 КБ)
Помимо этих ограничений, я могу вносить любые изменения в блок, необходимые для его заполнения, если сам файл не нарушает его формат. Я думаю, что лучше всего использовать любой из полностью заполненных блоков 4k, а не последний блок, который может быть очень коротким.
Вопрос
Как мне начать решать эту проблему? Первое, что я бы придумал, это какой-то брутфорс, но не потребуется ли очень много времени, чтобы найти изменения, которые приведут к тому, что оба значения CRC останутся прежними? Возможно, есть математический способ решить это?
Это должно быть сделано в секундах или макс. несколько минут.