Тестови вектори за CRC32C

Пиша тестова система за библиотека за изчисления на CRC и търся референтни тестови вектори за CRC-32C. Намерих много за CRC-32, но нищо конкретно за CRC-32C. Може ли някой да ме насочи към препратка?

Успях да изчисля тези стойности с помощта на онлайн калкулатор от този url:

crc32c("") = 0
crc32c("The quick brown fox jumps over the lazy dog") = 0x22620404

Въпреки това дори не съм сигурен дали настройката ми е правилна. Всичко, от което се нуждая, е препратка към надежден източник, който би предоставил няколко тестови вектора като този.


person dtoux    schedule 07.01.2014    source източник
comment
Инструкцията x86 CRC32 използва CRC32C. Можете да създадете проста програма за генериране на ваши собствени препратки, ако е необходимо. Все още се нуждаете от предварително изготвена справка като отговора на Марк, за да проверите справката си за проверка на справката.   -  person srking    schedule 08.01.2014
comment
Ето един инструмент за онлайн проверка: checksumcalc.live.conceptcontrols.com Стойността CRC32C, от която се нуждаете, е малко- endian, обърнат 0x82F63B78 ​​в таблицата.   -  person Tobu    schedule 19.10.2016
comment
@Tobu Много хубаво, благодаря.   -  person dtoux    schedule 20.10.2016


Отговори (3)


Този CRC каталог предоставя стойността за проверка на 0xe3069283 за CRC-32C на поредицата от ASCII знаци: "123456789" (без кавичките).

person Mark Adler    schedule 07.01.2014
comment
Сам попаднах на тази страница, но не можах да разбера каква е тестовата последователност :-) Благодаря, че изяснихте това. - person dtoux; 07.01.2014
comment
... и да, стойността в оригиналния въпрос се проверява :-) - person dtoux; 07.01.2014
comment
Обяснението на параметрите на легендата, т.е. check е тук: reveng.sourceforge .io/crc-каталог/ - person Raman; 12.09.2020
comment
FYI: контролните суми от този каталог са в голям ред (мрежов) ред. - person Raman; 12.09.2020
comment
@Raman Е, наистина те са просто числа, записани със стандартна нотация. Не в big или little endian. Предполагам, че мога да си представя шестнадесетичните цифри, разделени по двойки, ако желаете. Но те не са разделени по двойки. Няма байтове - само цели числа в шестнадесетична система. - person Mark Adler; 12.09.2020
comment
@MarkAdler сигурен, но работи назад... за да получи правилното цяло число на контролната сума на CRC-32C от 123456789, трябва да интерпретира 4-те байта от 0xe3069283 в ред от порядъка на големия. За сравнение, ето кода, който Гуава използва за преобразуване на контролната сума в байтове: github.com/google/guava/blob/ -- както можете да видите, това е little endian, така че шестнадесетичната контролна сума на Guava върху ASCII байтовете на 123456789 е обърнато: 0x839206e3. - person Raman; 12.09.2020
comment
За да поясним, вашето мнение, че 0xe3069283 е просто цяло число контролна сума в база 16, е взето. Мисля обаче, че коментарът ми все още е валиден, защото 0xe3069283 може също толкова лесно да се интерпретира като поредица от 4 байта в паметта, в който случай познаването на реда на байтовете става важно. - person Raman; 13.09.2020

Ето тестови данни от RFC3720, който използва crc32c.

https://tools.ietf.org/html/rfc3720#appendix-B.4

person Vouze    schedule 19.08.2014
comment
За информация: контролните суми в този документ са в ред от малкия край. - person Raman; 12.09.2020

Ето отговор „и аз“ с някои стойности, които можете да използвате без анализ на стандартите. Бяха кръстосано проверени с MAKECRC.C на Adler и Intel Вътрешни характеристики на CRC.

Реализацията на Adler беше модифицирана, за да използва полинома 0x82F63B78, който има следните коефициенти:

/* terms of polynomial defining this crc (except x^32): */
static int p[] = {0,6,8,9,10,11,13,14,18,19,20,22,23,25,26,27,28};

По-долу са двойки String/CRC-32C. Обърнете внимание на endiness. Отговорите по-долу бяха извлечени байт по байт на машина с малък ред, точно както би бил представен конвенционален дайджест.

{"", "\x00\x00\x00\x00"}
{"a", "\x30\x43\xd0\xc1"}
{"abc", "\xb7\x3f\x4b\x36"}
{"message digest", "\xd0\x79\xbd\x02"}
{"abcdefghijklmnopqrstuvwxyz", "\x25\xef\xe6\x9e"}
{"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "\x7d\xd5\x45\xa2"}
{"12345678901234567890123456789012345678901234567890123456789012345678901234567890", "\x81\x67\x7a\x47"}
{"123456789", "\x83\x92\x06\xe3"}
person jww    schedule 24.04.2016