Calculadora de checksum CRC-32 e CRC-32C | Dois polinômios, uma entrada
Obtenha o CRC-32 IEEE 802.3 e o CRC-32C Castagnoli a partir de um único texto ou bytes hexadecimais, lado a lado em hex e decimal. Feita para o momento em que você tem um checksum à frente e precisa saber qual polinômio o gerou.
💡 Sobre esta ferramenta
A maioria das calculadoras CRC online assume um único polinômio em silêncio, e aí está a armadilha: "CRC-32" não é um número único. A variante clássica IEEE 802.3 (polinômio refletido 0xEDB88320) é a usada por zip, gzip, PNG e quadros Ethernet. O CRC-32C de Castagnoli (0x82F63B78) é outra coisa: integrado a SCTP, iSCSI, Btrfs e aos metadados do ext4, em parte porque as CPUs modernas o calculam com uma instrução dedicada.
Quando um depurador mostra um checksum armazenado e seu código não bate, a causa comum é a troca de polinômio. Esta calculadora mostra os dois de uma vez para você comparar o valor desconhecido com o correto sem refazer sua cadeia de ferramentas. Alterne para o modo bytes hex para inserir os bytes brutos exatamente como aparecem em uma captura de pacotes ou editor hexadecimal; prefixos 0x, espaços, vírgulas e dois pontos são aceitos.
🧐 Perguntas frequentes
Q. Qual a diferença entre CRC-32 e CRC-32C?
A. Usam polinômios geradores diferentes. O IEEE 802.3 CRC-32 emprega 0xEDB88320 (refletido) e aparece em zip, gzip e PNG. O CRC-32C usa o 0x82F63B78 de Castagnoli, com melhor detecção de erros e aceleração por hardware no x86 pela instrução crc32.
Q. Meu checksum não bate com o do arquivo. Por quê?
A. Além do polinômio, as variantes CRC diferem na reflexão de bits, no valor inicial e no XOR final. Esta ferramenta usa os parâmetros padrão: inicial 0xFFFFFFFF, entrada e saída refletidas, XOR final 0xFFFFFFFF. Se um formato usa outros parâmetros, o resultado muda mesmo com o mesmo polinômio.
Q. Como verifico se o cálculo está correto?
A. A string de teste 123456789 retorna 0xCBF43926 para IEEE CRC-32 e 0xE3069283 para CRC-32C. Esses são os valores de referência publicados, então você pode confirmar a ferramenta antes de confiar nela com seus dados.
Q. Por que a entrada vazia mostra 00000000?
A. Com o valor inicial e o XOR final padrão, o CRC de zero bytes se cancela e fica em 0x00000000. Esse é o resultado correto, não um erro.
📚 Curiosidades
A escolha do CRC-32C para SCTP e iSCSI não foi por acaso. A busca que Guy Castagnoli realizou em 1993 classificou os polinômios pela distância de Hamming, o menor número de erros de bit capazes de passar despercebidos. Seu polinômio capta mais padrões de erro em comprimentos comuns de mensagem que o clássico da IEEE. Anos depois a Intel adicionou uma instrução SSE4.2 para executar esse polinômio em hardware, o que explica por que os sistemas de arquivos projetados nesta década preferem a variante "C" enquanto seu arquivo zip ainda carrega o original.