A pergunta como está formulada é off-topic, no entanto tentarei torná-la no tópico, abordando como procurar documentação sobre as ferramentas que dependem dos módulos do Perl de maneira geral; em ordem:
-
man <tool>
;De
man crc32
:This utility is supplied with the Archive::Zip module for Perl.
-
perldoc <module>
;De
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.
Aplique recursivamente até que algo avance ou o módulo "root" seja alcançado; Nesse caso, a recursão termina com
perldoc Compress::Raw::Zlib
, o que não vale; -
Digite o código-fonte do módulo "raiz" :
Gere tabelas para um cálculo de CRC de 32 bits byte-wise no polinômio: 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.
Polinômios acima de GF (2) são representados em binário, um bit por coeficiente, com os poderes mais baixos no bit mais significativo. Então adicionando polinômios é apenas-exclusivo ou, e multiplicando um polinômio por x é um deslocamento à direita por 1. Se chamarmos o polinômio p acima, e representar um byte como o polinômio q, também com a menor potência no bit mais significativo (de modo que o byte 0xb1 é o polinômio x ^ 7 + x ^ 3 + x + 1), então o CRC é (q * x ^ 32) mod p, onde um mod b significa o resto depois de dividir a por b.
Este cálculo é feito usando o método shift-register de multiplicar e tomando o restante. O registrador é inicializado para zero e para cada bit de entrada, x ^ 32 é adicionado mod p ao registrador se o bit for um (onde x ^ 32 mod p é p + x ^ 32 = x ^ 26 + ... + 1), e o registrador é multiplicado mod p por x (que está passando por um e adicionando x ^ 32 mod p se o bit mudou out é um). Começamos com a maior potência (bit menos significativo) de q e repita para todos os oito bits de q.
A primeira tabela é simplesmente o CRC de todos os possíveis valores de oito bits. Isto é todas as informações necessárias para gerar CRCs em dados, um byte de cada vez para todos combinações de valores de registro CRC e bytes recebidos. As restantes tabelas permitem o cálculo da CRC de palavras por vez para big endian e little máquinas endian, onde uma palavra é de quatro bytes.