Calcular CRC32 online
O CRC32 é um código de verificação de 32 bits, escrito com 8 caracteres hexadecimais, usado para detectar erros acidentais em dados, como em arquivos ZIP, imagens PNG e transmissões de rede. Esta ferramenta calcula o CRC32 de um texto ou arquivo no seu navegador, em hexadecimal, decimal ou Base64. Ele não serve para segurança.
- CRC-32
- -
O cálculo é feito no seu navegador. O texto e os arquivos não são enviados a nenhum servidor.
Achou um resultado errado ou tem uma sugestão? Avise por e-mail.
Como usar
- Digite ou cole o texto, ou escolha um arquivo.
- O CRC32 aparece na hora. Escolha a saída: hexadecimal, decimal ou Base64.
- Clique em Copiar para levar o valor.
Como funciona
O CRC32 trata os bytes da entrada como um polinômio e calcula o resto da divisão por um polinômio fixo de 32 bits, o mesmo do padrão IEEE 802.3, usado no ZIP, no gzip, no PNG e na função crc32 do PHP e do zlib. O texto é convertido para UTF-8 antes do cálculo.
Ele detecta com certeza erros comuns de transmissão, como bits trocados e trechos curtos corrompidos, e é muito rápido. Mas é fácil criar de propósito dois conteúdos com o mesmo CRC32, então ele não protege contra adulteração: para isso, use SHA-256.
Existe também o CRC-32C (Castagnoli), usado no iSCSI, no ext4 e em serviços de nuvem, que usa outro polinômio e dá outro resultado. Esta ferramenta calcula o CRC-32 do padrão IEEE.
Exemplos de CRC32
123456789: cbf43926 (o valor de conferência do padrão)
Texto vazio: 00000000
abc: 352441c2
Em código
Para calcular o CRC32 em código: Python e PHP já trazem a função pronta; em JavaScript, a tabela de 256 valores resolve em poucas linhas. Atenção ao nome no PHP: o CRC32 do ZIP é o crc32b.
// CRC-32 (IEEE), o mesmo do ZIP, do PNG e do gzip. No Node.js 22.2+ também há zlib.crc32().
const TABELA = Array.from({ length: 256 }, (_, n) => {
let c = n;
for (let k = 0; k < 8; k++) c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
return c >>> 0;
});
function crc32(bytes) {
let c = 0xffffffff;
for (const b of bytes) c = TABELA[(c ^ b) & 0xff] ^ (c >>> 8);
return ((c ^ 0xffffffff) >>> 0).toString(16).padStart(8, '0');
}
// crc32(new TextEncoder().encode('123456789')) === 'cbf43926' import zlib
def crc32_hex(dados: bytes) -> str:
# zlib.crc32 devolve um número sem sinal no Python 3
return f"{zlib.crc32(dados):08x}"
def crc32_arquivo(caminho: str) -> str:
valor = 0
with open(caminho, "rb") as f:
for pedaco in iter(lambda: f.read(1024 * 1024), b""):
valor = zlib.crc32(pedaco, valor) # continua o cálculo do pedaço anterior
return f"{valor:08x}" <?php
function crc32Hex(string $dados): string
{
// hash('crc32b') é o CRC-32 do ZIP; hash('crc32') é outra variante, com outro resultado
return hash('crc32b', $dados);
}
function crc32Arquivo(string $caminho): string
{
return hash_file('crc32b', $caminho);
} Perguntas frequentes
Qual a diferença entre CRC32 e MD5 ou SHA-256?
O CRC32 é um código de verificação para erros acidentais, curto e muito rápido. MD5 e SHA-256 são funções de hash criptográficas, maiores e feitas para dificultar colisões; só o SHA-256 ainda é seguro para isso.
Por que o CRC32 do PHP dá um número e não hexadecimal?
A função crc32() do PHP devolve o valor como inteiro. É o mesmo CRC32 desta ferramenta na saída decimal. Para o hexadecimal, use hash("crc32b", $texto).
O CRC32 serve para conferir downloads?
Serve para detectar arquivos corrompidos por acidente, e é isso que o ZIP faz. Mas não prova que ninguém alterou o arquivo de propósito: para isso, compare o SHA-256 publicado pelo autor.
Por que meu CRC32 é diferente de outra ferramenta?
Pode ser outra variante (como CRC-32C ou o crc32 do PHP hash(), que não é o do ZIP), uma diferença invisível no texto, como uma quebra de linha no fim, ou a codificação do texto. Esta ferramenta usa o CRC-32 IEEE sobre o texto em UTF-8.
Outras ferramentas que podem ajudar
- Gerador de HashGere hash MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de um texto ou arquivo
- Gerador de MD5Gere o hash MD5 de um texto ou arquivo online, em hexadecimal ou Base64
- Gerador de SHA256Gere o hash SHA-256 de um texto ou arquivo online, em hexadecimal ou Base64
- Codificar Base64Converta texto para Base64 online, com suporte a acentos (UTF-8) e opção URL-safe
- Decodificar Base64Decodifique Base64 para texto online, com suporte a UTF-8 e Base64 URL-safe
- Gerador de UUIDGere UUID v4 aleatório com um clique: em lote, em maiúsculas, com ou sem hífens