Что crc32 является многочленом?

Что многочлен используется для crc32? ANSI X3.66 CRC-32 является 0x104C11DB7. Страница справочника для crc32 не указывает на многочлен, который это использует.

1
задан 24 November 2015 в 02:59

1 ответ

Вопрос, как формулируется, вне темы, однако я попытаюсь сделать его на теме путем обращения, как искать документацию относительно инструментов, которые полагаются на модули Perl общим способом; в порядке:

  1. man <tool>;

    От man crc32:

           This utility is supplied with the Archive::Zip module for Perl.
    
  2. perldoc <module>;

    От perldoc Archive::Zip:

        Archive::Zip::computeCRC32( $string [, $crc] )
        Archive::Zip::computeCRC32( { string => $string [, checksum => $crc ] } )
            This is a utility function that uses the Compress::Raw::Zlib CRC
            routine to compute a CRC-32.
    

    Применяются рекурсивно, пока что-то не помогает, или "корневой" модуль достигнут; в этом случае рекурсия заканчивается perldoc Compress::Raw::Zlib, который не помогает;

  3. Роют исходный код "корневого" модуля :

    таблицы Generate для мудрого байтом 32-разрядного вычисления CRC на многочлене: x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.

    Многочлены по GF (2) представлены в двоичном файле, один бит за коэффициент, с самыми низкими полномочиями в старшем значащем бите. Тогда добавление многочленов просто эксклюзивно - или, и умножение многочлена x является сдвигом вправо одним. Если мы называем вышеупомянутый многочлен p и представляем байт как многочлен q, также с самым низким питанием в старшем значащем бите (таким образом, байт 0xb1 является многочленом x^7+x^3+x+1), то CRC является (q*x^32) модификацией p, где модификация b означает остаток после деления a на b.

    Это вычисление сделано с помощью метода сдвигового регистра умножения и взятия остатка. Регистр инициализируется для обнуления, и для каждого входящего бита, x^32 добавляется модификация p к регистру, если бит - один (где x^32 модификация p является p+x^32 = x^26 +... +1), и регистр умножается модификация p x (который смещается прямо одним и добавляет x^32 модификацию p, если переключенный на верхний регистр бит является одним). Мы запускаем с самого высокого питания (младший значащий бит) q и повторения для всех восьми битов q.

    первая таблица является просто CRC всех возможных восьми битовых значений. Это - вся информация, должен был генерировать CRCs на данных байт за один раз для всех комбинаций значений регистра CRC и входящих байтов. Остающиеся таблицы допускают word-at-a-time вычисление CRC и для обратного порядка байтов и мало-для машин порядка байтов, где слово составляет четыре байта.

5
ответ дан 3 December 2019 в 06:40

Другие вопросы по тегам:

Похожие вопросы: