CRC входных данных короче ширины поли - PullRequest
0 голосов
/ 27 августа 2018

Я нахожусь в процессе написания статьи во время обучения по внедрению CRC в Excel с VBA. Я создал довольно простой модульный алгоритм, который использует параметризованную модель Росса . Он работает безупречно для любого полинома длины и любой комбинации параметров, кроме одного; когда длина входных данных короче ширины полинома и , выбирается начальное значение («INIT»), для которого установлены любые биты, которые «превосходят» длину входных данных.

Пример:

Input Data: 0x4C
Poly: 0x1021
Xorout: 0x0000
Refin: False
Refout: False

Если я не выберу INIT или любой INIT, например 0x ## 00, я получу ту же контрольную сумму, что и любой из онлайн-генераторов CRC. Если какой-либо бит из последних двух шестнадцатеричных символов установлен - например, 0x0001 - мой результат недействителен.

Я полагаю, что вопрос сводится к «Как инициализируется регистр, если для двухбайтового параметра INIT присутствует только один байт входных данных?»

1 Ответ

0 голосов
/ 27 августа 2018

Оказывается, я был введен в заблуждение (или я вполне мог неправильно истолковать) объяснение того, как использовать параметр INIT на веб-сайте sunshine2k . Значение INIT не должно быть XORed с первыми n входными байтами как таковыми ( n является шириной регистра / обрезанной поли / контрольной суммы), но должно быть только XORed после n 0-бит добавлены к входным данным. Эта спецификация не имеет значения, когда входные данные равны или превышают n байт, но имеет значение, когда входные данные слишком короткие.

...