Вопрос

Можно ли определить байт или байты, которые изменились с расчета CRC16?

Например, скажем, я получаю файл конфигурации, который составляет 780 байтов, который включает в себя CRC16 в виде двух байта в конце (поэтому CRC16 рассчитывается на основе первых 778 байтов). Когда я рассчитываю CRC16 для содержимого файла (778 байтов, которые не включают CRC16 в конце), и он отличается, могу ли я определить смещение байта, в которой произошла ошибка?

Это было полезно?

Решение

Короткий ответ - нет, вы не можете.

Чтобы понять, почему вы должны понять, как вычисляется CRC и что математически называется операцией хэширования. Это означает, что выход не может быть надежно реконструирован из сгенерированного хэш -кода (в данном случае CRC).

Существуют методы статистического анализа, которые могут позволить вам вывести некоторую информацию о исходном тексту, основанном на определенных конкретных случаях входных испытательных случаев, но в большинстве случаев, а также на наивного наблюдателя нет прямого отображения обратно в исходный текст из CRC. Таким образом, если исходный текст не был построен определенным образом, невозможно узнать о смещении, при котором данные были изменены в большинстве случаев.

Другие советы

Используя только два вычисления CRC16, нет.

CRC16 - это просто контрольная сумма: она может сказать вам, что есть разница, но не где.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top