>>> Врезка неизвестные алгоритмы и борьба с ними
Хорошо, если алгоритм подсчета контрольной суммы известен, но что делать если он недоступен? (воплощен в железе, находится на удаленном сервере и т.д.). А вот что —воспользоваться тупым перебором! Информационная стойкость CRC32 равна 32-битам, дающих всего лишь 4.294.967.296 комбинаций. Учитывая высокую скорость вычисления CRC32, подбор корректирующих байт займет совсем немного времени — буквально минуты, а то и десятки секунд!
Внедряем двойное слово, равное нулю, в произвольное место контролируемого блока и рассчитываем контрольную сумму по обычному алгоритму. Если CRC не OK, увеличиваем двойное слово на единицу и продолжаем до тех пор, пока желаемое CRC не будет найдено.
CRC16 подбирается вообще мгновенно! С CRC64, конечно, уже приходится основательно попыхтеть, но быстрые табличные алгоритмы на мощных процессорах найдут искомую комбинацию за несколько часов, ну в худшем случае за ночь (тут все, конечно, от размера контролируемого блока зависит).
CRC128 методом перебора уже не ломается (разве что задействовать сеть из нескольких машин), но элементарно восстанавливается по методике, описанной выше.