Тестовые векторы для 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
К вашему сведению: контрольные суммы из этого каталога в обратном (сетевом) порядке. - person Raman; 12.09.2020
comment
@Raman Ну, на самом деле это просто числа, записанные в стандартной записи. Не в большом или маленьком порядке. Я полагаю, что могу представить шестнадцатеричные цифры, разделенные на пары, если хотите. Но они не разделены на пары. Здесь нет байтов — только целые числа в шестнадцатеричном формате. - person Mark Adler; 12.09.2020
comment
@MarkAdler конечно, но работает в обратном направлении ... чтобы получить правильное целое число контрольной суммы CRC-32C 123456789, нужно интерпретировать 4 байта 0xe3069283 в порядке байтов с обратным порядком байтов. Для сравнения, вот код, который Guava использует для преобразования контрольной суммы в байты: .java#L132-L135" rel="nofollow noreferrer">github.com/google/guava/blob/ -- как видите, это прямой порядок байтов, поэтому шестнадцатеричная контрольная сумма 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

Вот ответ «я тоже» с некоторыми значениями, которые вы можете использовать без синтаксического анализа стандартов. Они были перепроверены с помощью Adler MAKECRC.C и Intel. Внутренности CRC.

Реализация Адлера была изменена для использования полинома 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. Обратите внимание на порядковый номер. Приведенные ниже ответы были извлечены байт за байтом на машине с прямым порядком байтов, как если бы был представлен обычный дайджест.

{"", "\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