Calcular o checksum de um ficheiro
- Painel
- Documentação
- API
O que é um checksum?
Um checksum (soma de controlo, por vezes escrito chksum) é uma impressão digital única calculada a partir do conteúdo de um ficheiro por um algoritmo de hashing. Esta impressão, ou fingerprint, é geralmente representada por uma cadeia hexadecimal de comprimento fixo.
A propriedade fundamental de um bom algoritmo de hashing é o efeito de avalanche: qualquer modificação do ficheiro fonte, mesmo de um único bit, produz um checksum radicalmente diferente. Dois ficheiros com conteúdo estritamente idêntico produzem sempre o mesmo checksum, independentemente do nome do ficheiro, da data de modificação ou do sistema operativo.
O checksum serve principalmente para verificar a integridade de um ficheiro: se a impressão recalculada localmente corresponde à anunciada pelo editor, o ficheiro está intacto. Caso contrário, foi alterado, corrompido em trânsito, ou modificado.
Para que serve concretamente?
- Verificar a integridade de um descarregamento: uma ISO Linux (Debian, Ubuntu, Fedora, Arch), uma imagem Docker, um instalador Windows ou um arquivo open source publicam sistematicamente um checksum oficial. Recalculá-lo localmente confirma que o ficheiro está completo e não alterado.
- Detetar uma corrupção em trânsito: um descarregamento interrompido, um setor de disco defeituoso, uma RAM instável, um cabo de rede caprichoso, ou uma cópia para pen USB podem corromper octetos. O checksum revela imediatamente esses erros silenciosos.
- Impressão de assinatura: confirmar que um ficheiro provém mesmo do autor esperado quando o checksum é difundido por um canal seguro (HTTPS, assinatura GPG). É o mecanismo na base dos repositórios de pacotes Linux e das lojas de aplicações.
- Versionamento e caching: o Git identifica cada commit, blob e árvore por um hash SHA-1 (em migração para SHA-256). As CDN e os bundlers web (Webpack, Vite, esbuild) injetam um hash no nome do ficheiro (
app.4a8f2c.js) para invalidar automaticamente a cache do navegador numa mudança. - Deteção de duplicados e desduplicação: backups incrementais (Borg, Restic, rsync), sistemas de ficheiros (ZFS), e armazenamentos objeto identificam os blocos idênticos pelo seu hash para guardar apenas uma cópia.
- Validação de upload: um cliente envia o checksum esperado, o servidor recalcula-o à receção. O AWS S3, por exemplo, aceita um cabeçalho
Content-MD5oux-amz-checksum-sha256para rejeitar um upload corrompido. - Threat intelligence e antivírus: o VirusTotal e os editores de antivírus indexam os ficheiros maliciosos pelo seu hash SHA-256, o que permite uma deteção sem transmitir o binário completo.
Algoritmos suportados e diferenças
- MD5 (128 bits, 32 caracteres hexadecimais): rápido, amplamente difundido, mas quebrado criptograficamente. Colisões MD5 são calculáveis em segundos em hardware comum desde 2004. A utilizar apenas para verificação de integridade não maliciosa (descarregamento contra uma quebra de rede, backup local). Proibido para qualquer função de segurança, assinatura, ou autenticação.
- SHA-1 (160 bits, 40 caracteres hexadecimais): depreciado para a criptografia desde o ataque SHAttered de 2017, que demonstrou uma colisão real entre dois PDFs distintos. O Git ainda o utiliza por defeito mas migra para SHA-256. Não usar mais para assinar ou autenticar.
- SHA-256 (256 bits, 64 caracteres hexadecimais): padrão moderno, membro da família SHA-2. Base dos certificados TLS modernos, das assinaturas de pacotes Linux (apt, dnf, pacman), do Bitcoin, e dos controlos de integridade oficiais. Mais lento do que MD5 mas seguro no estado dos conhecimentos atuais.
- SHA-512 (512 bits, 128 caracteres hexadecimais): variante 64-bit do SHA-2. Manipula palavras de 64 bits nativamente, o que o torna por vezes mais rápido que SHA-256 em CPU 64-bit. Impressão mais longa, margem de segurança superior.
- CRC32 (32 bits, 8 caracteres hexadecimais): não criptográfico, ultrarrápido, concebido especificamente para detetar erros de transmissão. Utilizado pelo Ethernet, ZIP, PNG, gzip. Não protege contra a malícia: um atacante pode trivialmente forjar um ficheiro com o mesmo CRC32 que outro. Adequado a controlos hardware rápidos, não à segurança.
Casos de uso
- Verificar uma ISO Linux: Debian, Ubuntu, Fedora e Arch publicam os SHA-256 e SHA-512 de cada imagem oficial, frequentemente contra-assinados em GPG.
- Validar um binário assinado: confirmar que um executável descarregado a partir de um espelho não foi substituído por uma versão armadilhada.
- Comparar duas versões: antes e depois de uma modificação, um checksum idêntico prova a identidade bit a bit, sem ter de difundir os ficheiros.
- Validação de upload: o cliente envia um checksum, o servidor recalcula-o à receção para confirmar a ausência de corrupção.
- Fingerprinting: deteção de bots ou de ficheiros conhecidos em bases de impressões (antivírus, threat intelligence, deteção de duplicados).
Como utilizar
- Arraste e largue o ficheiro na zona prevista, ou utilize o botão de seleção.
- Escolha o algoritmo: MD5, SHA-1, SHA-256, SHA-512 ou CRC32.
- O checksum aparece, pronto a ser copiado.
- Compare o valor obtido com o de referência (publicado pelo editor ou conservado localmente).
O cálculo é feito localmente no seu navegador, sem envio do ficheiro a um servidor remoto. O conteúdo permanece confidencial.
Como verificar um descarregamento com checksum?
O procedimento padrão de verificação é o seguinte:
- O site oficial publica o checksum esperado, por exemplo
d41d8cd98f00b204e9800998ecf8427epara MD5 ou uma cadeia de 64 caracteres para SHA-256. - Descarregue o ficheiro.
- Calcule o seu checksum, com esta ferramenta ou em linha de comandos.
- Compare: se as duas cadeias forem estritamente idênticas, caractere a caractere, o ficheiro está intacto. Se diferirem, mesmo num só caractere, o ficheiro está corrompido ou adulterado: não o utilize, descarregue de novo.
Em linha de comandos em Linux:
# Calculer le checksum
md5sum fichier.iso
sha1sum fichier.iso
sha256sum fichier.iso
sha512sum fichier.iso
cksum fichier.iso # CRC32 + taille
# Vérifier automatiquement depuis un fichier .sha256 publié par l'éditeur
sha256sum -c fichier.iso.sha256
# Affiche : "fichier.iso: OK" si le checksum correspond
Em macOS:
md5 fichier.iso
shasum -a 1 fichier.iso
shasum -a 256 fichier.iso
shasum -a 512 fichier.iso
# Vérification depuis un fichier de référence
shasum -a 256 -c fichier.iso.sha256
Em Windows (PowerShell):
Get-FileHash fichier.iso -Algorithm MD5
Get-FileHash fichier.iso -Algorithm SHA1
Get-FileHash fichier.iso -Algorithm SHA256
Get-FileHash fichier.iso -Algorithm SHA512
# Comparer à une valeur attendue
(Get-FileHash fichier.iso -Algorithm SHA256).Hash -eq "ABC123..."
Comparação rápida dos algoritmos
| Algoritmo | Tamanho | Velocidade | Uso recomendado |
|---|---|---|---|
| CRC32 | 32 bits | Muito rápido | Deteção de erros de rede ou armazenamento, não criptográfico |
| MD5 | 128 bits | Rápido | Integridade não hostil apenas, a evitar em segurança |
| SHA-1 | 160 bits | Rápido | Obsoleto, compatibilidade antiga (Git, pacotes antigos) |
| SHA-256 | 256 bits | Moderada | Padrão atual, verificação de integridade e assinaturas |
| SHA-512 | 512 bits | Rápido em 64 bits | Verificação de integridade, margem de segurança superior |
FAQ
MD5 ou SHA-256 para verificar a minha ISO?
SHA-256 por defeito. A quase totalidade das distribuições Linux modernas publica SHA-256 e SHA-512, por vezes ao lado de MD5 por compatibilidade histórica. Se o editor só publicar MD5 e receia uma comprometimento, exija SHA-256 ou verifique a assinatura GPG do ficheiro de checksums. Se receia apenas uma corrupção no descarregamento, MD5 chega tecnicamente.
O checksum garante a segurança do meu ficheiro?
Não, sozinho não. Um checksum prova a integridade, não a autenticidade. Se um atacante controlar o servidor de descarregamento, pode publicar um ficheiro modificado e o seu checksum modificado. A segurança real vem de uma assinatura digital (GPG, code signing) que liga o checksum a uma chave privada conhecida. Obtenha sempre o checksum via HTTPS ou, melhor, através de uma assinatura GPG verificável.
O meu checksum não coincide, o que fazer?
Primeiro, verifique se está a comparar o algoritmo certo: um SHA-256 não pode coincidir com um SHA-1. Depois, recomece o descarregamento, idealmente a partir de outro espelho: a causa mais frequente é uma quebra de rede. Se a diferença persiste após várias tentativas, suspeite de uma comprometimento do espelho: volte à fonte oficial e verifique a assinatura GPG se existir. Nunca executar ou utilizar o ficheiro enquanto o checksum não corresponder.
Porque é que MD5 está depreciado?
MD5 sofre de colisões práticas: é possível construir dois ficheiros diferentes com exatamente o mesmo hash MD5 em segundos. Esta propriedade viola a própria função de um hash criptográfico. Concretamente, um atacante pode criar um binário malicioso com o mesmo MD5 que um binário legítimo. O SHA-1 sofre do mesmo problema desde 2017 (ataque SHAttered). Apenas SHA-256, SHA-512 e as suas variantes continuam considerados seguros em 2026.
Diferença entre hash e checksum?
Um hash é o resultado genérico de uma função de hashing. Um checksum é um hash utilizado especificamente para verificar a integridade de um dado. Todos os checksums são hashes, mas nem todos os hashes são checksums: um hash de palavra-passe (bcrypt, argon2) serve para autenticação, um hash numa tabela de hash serve para indexar rapidamente. O termo fingerprint ou impressão é um sinónimo comum de checksum.
O CRC32 chega para as minhas necessidades?
O CRC32 chega se procura unicamente detetar uma corrupção acidental num canal não hostil: transferência de rede interna, verificação de arquivo ZIP, controlo de coerência em memória. Com apenas 32 bits, dois ficheiros aleatórios têm cerca de 1 hipótese em 4 mil milhões de ter o mesmo CRC32 por acaso, o que basta para uma deteção de erros. O CRC32 é insuficiente assim que um atacante pode influenciar o conteúdo: é trivial forjar um ficheiro com um CRC32 alvo. Para qualquer verificação face a risco malicioso, utilize SHA-256.
Porque é que o meu checksum difere consoante o OS?
O checksum de um mesmo conteúdo binário é idêntico em todo o lado. Se obtém dois resultados diferentes, é porque o ficheiro difere realmente: fins de linha (CRLF Windows contra LF Unix) após uma transferência FTP em modo texto, codificação do texto modificada na abertura, metadados acrescentados pelo sistema (resolução Spotlight macOS, atributos estendidos), ou recompressão silenciosa por um cliente de transferência. Transfira sempre em modo binário.
Checksum ou assinatura digital?
Um checksum prova que um ficheiro não foi alterado entre a publicação e a receção, desde que se obtenha o checksum por um canal seguro. Uma assinatura digital (GPG, PGP, code signing Authenticode) prova além disso a identidade do autor graças a uma chave privada. A assinatura engloba e reforça o checksum: a prática padrão na Debian, Tor ou Bitcoin Core é assinar em GPG o ficheiro de checksums, e depois utilizar esses checksums para verificar os binários.
Perguntas frequentes
O ficheiro é enviado a um servidor para calcular o checksum?
Não. O cálculo efetua-se integralmente no seu navegador graças à API Web Crypto e a rotinas JavaScript locais. O conteúdo do ficheiro não sai da sua máquina, o que permite fazer hash em toda confidencialidade de documentos sensíveis, arquivos cifrados ou dumps de base de dados. Esta abordagem garante também desempenhos estáveis, independentes da largura de banda.
Que tamanho de ficheiro posso fazer hash com esta ferramenta?
O cálculo faz-se em streaming por blocos, portanto o limite depende essencialmente da memória e do tempo que o seu navegador pode dedicar à operação. Algumas centenas de megabytes passam sem dificuldade num posto padrão. Para ficheiros de vários gigabytes (ISO completa, dump volumoso), prefira a linha de comandos do sistema (sha256sum, Get-FileHash) que explora melhor os recursos de disco e CPU.
Qual a diferença entre fazer hash de um ficheiro e fazer hash de texto?
O algoritmo é rigorosamente o mesmo, só a entrada muda. Para um texto, faz-se hash da sequência de octetos da cadeia numa codificação dada (tipicamente UTF-8). Para um ficheiro, faz-se hash do conteúdo binário bruto, octeto a octeto, incluindo os eventuais cabeçalhos ou metadados integrados. É por isso que um ficheiro de texto e o seu conteúdo copiado num formulário podem dar checksums diferentes (BOM, fins de linha, codificação).
Porque é que o checksum de um arquivo ZIP varia a cada criação?
A maioria dos arquivadores (ZIP, TAR.GZ, 7z) armazena metadados variáveis como a data de criação, a ordem dos ficheiros ou indicadores de compressão. Recriar um arquivo com o mesmo conteúdo produz portanto um binário diferente e um checksum diferente. Para obter arquivos reproduzíveis, utilize ferramentas como diffoscope, strip-nondeterminism ou as opções --mtime e --sort=name do tar.
Existem alternativas mais rápidas que SHA-256 para verificar a integridade?
Sim. BLAKE2 e BLAKE3 são funções de hashing criptográficas modernas, concebidas para serem mais rápidas que SHA-256 oferecendo um nível de segurança equivalente ou superior. O BLAKE3 explora particularmente bem o paralelismo SIMD e multi-core, o que o torna muito eficiente em ficheiros grandes. Para a pura deteção de erros não hostil, xxHash é imbatível em velocidade, mas continua não criptográfico.
Posso comparar dois ficheiros sem calcular o seu hash inteiro?
Para dois ficheiros locais, uma comparação binária direta (cmp em Unix, fc /b em Windows) é mais rápida do que fazer hash dos dois. O hash torna-se útil quando os ficheiros não estão na mesma máquina, ou quando se quer conservar uma impressão curta sem guardar o original. Para controlos frequentes em grandes volumes, indexe os hashes numa base e compare as impressões em vez dos ficheiros completos.
Exemplo de pedido
curl -X POST https://cdrn.fr/api/v1/tools/hash-file-generator/execute \
-F "file=@/path/to/file" \
-F "algorithm=adler32"
Esquema de entrada
| Campo | Tipo | Obrigatório | Predefinição |
|---|---|---|---|
file |
file | ✓ | – |
algorithm |
choice (adler32, crc32, crc32b, crc32c, fnv132, fnv164, fnv1a32, fnv1a64, gost, gost-crypto, haval128,3, haval128,4, haval128,5, haval160,3, haval160,4, haval160,5, haval192,3, haval192,4, haval192,5, haval224,3, haval224,4, haval224,5, haval256,3, haval256,4, haval256,5, joaat, md2, md4, md5, murmur3a, murmur3c, murmur3f, ripemd128, ripemd160, ripemd256, ripemd320, sha1, sha224, sha256, sha3-224, sha3-256, sha3-384, sha3-512, sha384, sha512, sha512/224, sha512/256, snefru, snefru256, tiger128,3, tiger128,4, tiger160,3, tiger160,4, tiger192,3, tiger192,4, whirlpool, xxh128, xxh3, xxh32, xxh64) | ✓ | – |
esta ferramenta espera um ficheiro - utilize Content-Type multipart/form-data em vez de application/json
Pontos de acesso
GET https://cdrn.fr/api/v1/tools- lista todas as ferramentas disponíveisGET https://cdrn.fr/api/v1/tools/hash-file-generator- obtém o esquema desta ferramentaPOST https://cdrn.fr/api/v1/tools/hash-file-generator/execute- executa esta ferramenta com um payload JSON