Тестовые векторы CRC для CRC16 (CCITT) - PullRequest
5 голосов
/ 17 декабря 2009

Кто-нибудь знает некоторые тестовые векторы CRC для CRC16-CCITT ?

У меня нет реализации CRC, которой я могу доверять, и мне нужно либо проверить чью-либо реализацию, либо свою. (Для CRC32 я использую код PNG в качестве золотого стандарта, поскольку это референтная эталонная реализация.)

( Калькулятор CRC этого сайта выглядит полезным, но мне нужно как-то проверить правильность)


ОБНОВЛЕНИЕ: Вышеупомянутый калькулятор CRC выглядит полезным , но он требует только ascii, никакой возможности ввести гекс. --- однако очень неудобно вводить шестнадцатеричный ввод. (ASCII 12 в шестнадцатеричном виде может быть введен как %31%32, поэтому вы не можете просто скопировать + вставить длинную строку шестнадцатеричных байтов; также символ %, по-видимому, не имеет выхода)

Я проверил этот онлайн-калькулятор , который принимает шестнадцатеричные входные данные, по отношению к векторам тестирования Boost для CRC16, CRC16-CCITT и CRC32.

Ответы [ 3 ]

2 голосов
/ 17 декабря 2009

Boost имеет хорошую реализацию CRC, с которой вы можете проверить. Насколько я знаю, это можно настроить для CRC16. http://www.boost.org/doc/libs/1_41_0/libs/crc/index.html

На этой странице приведен пример того, как настроить его для имитации CCITT: http://www.boost.org/doc/libs/1_41_0/libs/crc/crc.html

0 голосов
/ 09 сентября 2013

Я нашел это:

http://introcs.cs.princeton.edu/java/51data/CRC16CCITT.java.html

"123456789".getBytes("ASCII"); -> 0x29b1
0 голосов
/ 11 октября 2012

Вот два тестовых вектора для CCITT-16 CRC (чей полином X16 + X12 + X5 + 1 (0x1021 в шестнадцатеричном представлении с большим порядком байтов); начальное значение CRC 0xFFFF. Значение XOR равно нулю.):

0x12345670 = 0xB1E4

0x5A261977 = 0x1AAD
...