Выберите идеальное начальное значение CRC - PullRequest
0 голосов
/ 02 марта 2019

Предположим, я выбрал соответствующий полином CRC и знаю содержание и размер фрейма данных, который я хочу защитить ... Как выбрать оптимальное начальное значение?

Известно, что CRC сначальное значение 0 имеет слепое пятно для сообщений с ведущими нулями.По этой причине во многих статьях и на веб-сайтах упоминается / рекомендуется указывать начальную стоимость всех единиц, поскольку это устраняет слепое пятно.

Мой вопрос: есть ли у всех те недостатки?Может ли быть лучшее начальное значение, чем у всех, если принять во внимание конкретный известный кадр данных?

1 Ответ

0 голосов
/ 02 марта 2019

Хотя CRC, инициализированный в ноль, не подвержен влиянию начальных нулей, если во время передачи какой-либо из этих ведущих нулей станет ненулевым из-за ошибки, он обнаружит ошибку.Чего он не поймает, так это укороченного сообщения, в котором некоторые ведущие нули удаляются из сообщения, что приводит к укороченному сообщению, что может быть проблемой, если нет отдельной проверки длины.Использование всех поймает такое сокращенное сообщение.Фактически любой ненулевой начальный CRC будет перехватывать сокращенное сообщение.Все просто удобно.Одним из вариантов является использование CRC, сгенерированного из короткого шаблона данных из всех, для начального значения, например, 16-битные биты, используемые в качестве данных для 16-битного CRC, для генерации начального CRC (это будет константа, поэтому будетвычисляется заранее), что будет эквивалентно добавлению данных со всеми 1 битами и инициализации CRC равным 0.

...