Anúncios incomodam? Ir Sem anúncios Hoje

MD5, SHA-256, SHA-3 Qual algoritmo de hash você realmente precisa?

Publicado em

Uma comparação direta entre MD5, SHA-1, SHA-256, SHA-3 e BLAKE3 — em quais situações cada algoritmo é apropriado, onde eles falham e qual deve ser usado por padrão.

MD5, SHA-256, SHA-3: Qual algoritmo de hash você realmente precisa? 1
ANUNCIADO Remover?

Se você ainda está usando MD5 como padrão, está em boa companhia — mas provavelmente está fazendo a escolha errada. Funções de hash produzem um "print" de tamanho fixo dos seus dados, mas não são intercambiáveis. Escolher o errado é, dependendo da direção errada, uma sobrecarga paranóica ou uma falha real de segurança.

Aqui está o que cada algoritmo realmente faz, onde falha e o que você deveria usar em vez disso.

O que um algoritmo de hash faz

Uma função de hash criptográfica recebe entrada de qualquer tamanho e retorna uma saída de tamanho fixo — determinística, um sentido, e (idealmente) resistente a colisões. A mesma entrada sempre produz o mesmo hash. Você não pode reverter isso. E alterar até um único byte na entrada muda completamente a saída.

Essas três propriedades tornam as funções de hash úteis para verificar a integridade dos dados, assinar documentos e construir checksums. Os algoritmos abaixo fazem isso. O que as separa é a resistência a ataques e a velocidade com que eles executam.

MD5: Pare de usá-lo para segurança

O MD5 produz um hash de 128 bits e executa rápido — exatamente o problema. Foi projetado em 1991, e em 2004 pesquisadores demonstraram ataques de colisão contra ele. Hoje, gerar dois arquivos diferentes que produzem o mesmo hash MD5 é computacionalmente trivial.

Onde falha: Qualquer contexto de segurança — verificações de integridade de arquivos por canais não confiáveis, assinaturas digitais, certificados TLS.

Onde ainda é aceitável: Checksums não de segurança. Deduplicação de arquivos, geração de chaves de cache, impressão de conteúdo dentro de um sistema que você controla — o MD5 é rápido e suficiente. Colisões só importam se um atacante puder explorá-las.

Precisa gerar um hash MD5 rapidamente? Use o Gerador de MD5.

SHA-1: Descontinuado, ainda presente

O SHA-1 produz uma saída de 160 bits e tem o mesmo problema fundamental: ataques de colisão são provados. O ataque SHAttered do Google em 2017 gerou dois arquivos PDF diferentes com hashes SHA-1 idênticos, custo agora praticamente acessível para atacantes motivados.

Está oficialmente descontinuado para assinaturas digitais e certificados TLS. Você ainda encontrará no Git, onde é usado como identificador de conteúdo — o modelo de ameaça lá é diferente, e o Git está ativamente migrando para SHA-256.

A regra: Não use SHA-1 para novos trabalhos de segurança. Marque para migração em sistemas legados.

SHA-256 e SHA-512: O padrão atual

O SHA-256 (parte da família SHA-2) é o que você deve usar como padrão para a maioria das aplicações criptográficas. Saída de 256 bits, sem ataques práticos conhecidos, suportado em todas as linguagens e plataformas que você provavelmente trabalhará.

O SHA-512 usa um estado interno de 512 bits e produz uma saída de 512 bits. Em CPUs de 64 bits, é muitas vezes mais rápido do que o SHA-256 para entradas grandes devido à forma como processa blocos. Para a maioria dos trabalhos de camada de aplicação, o SHA-256 é suficiente. Se você estiver processando grandes volumes de dados ou precisar de margem extra na derivação de chaves, teste o SHA-512.

Quando usar: Verificações de integridade de arquivos, HMACs, assinaturas de certificados (com RSA/ECDSA), assinaturas de requisições de API, tokens JWT.

SHA-3: Arquitetura diferente, uso nicho

O SHA-3 (Keccak) foi selecionado pela NIST em 2015 especificamente como alternativa estrutural ao SHA-2. Enquanto o SHA-2 usa a construção Merkle-Damgård, o SHA-3 usa uma construção de "sponge". Se uma fraqueza fundamental for descoberta no design do SHA-2, o SHA-3 ficaria inalterado.

Produz tamanhos de saída iguais (SHA3-256, SHA3-512, etc.) e passa todas as análises atuais de segurança, mas é geralmente mais lento que o SHA-256 em software puro.

Quando usar: Sistemas de longa duração onde a independência arquitetural do SHA-2 importa — módulos de segurança embarcados, certos contextos governamentais ou de conformidade, ou qualquer lugar onde você esteja explicitamente protegendo contra futuras fraquezas do SHA-2. Para a maioria dos aplicativos web, isso é um excesso teórico.

BLAKE3: A escolha moderna de desempenho

O BLAKE3 não é um padrão da NIST (ainda), mas tem forte adoção: o Rust’s cargo, o formato de hash streaming Bao e uma crescente lista de ferramentas de segurança e armazenamento que o usam. Projeto para paralelismo, executa significativamente mais rápido que o SHA-256 em software enquanto mantém resistência às análises criptográficas atuais.

Quando usar: Checksums de alto desempenho, endereçamento de conteúdo, em qualquer lugar onde você controla os dois lados e precisa de velocidade sem sacrificar segurança. Evite seu uso onde o SHA-2 é explicitamente exigido por especificação — certificados X.509, tokens JWT e contextos semelhantes.

Comparação de algoritmos de hash

Algoritmo Status de segurança Tamanho da saída Velocidade (software) Caso de uso
MD5 Quebrado (colisões) 128 bits Muito rápido Checksums não de segurança, deduplicação
SHA-1 Quebrado (colisões) 160-bit Rápido Apenas para sistemas legados; identificadores de conteúdo no Git
SHA-256 Seguro 256 bits Rápido Geral — escolha padrão
SHA-512 Seguro 512-bit Mais rápido em 64 bits para grandes dados Para alto desempenho ou margem extra
SHA-3 Seguro 224–512-bit Mais lento em software Sistemas de longa duração que precisam de independência do SHA-2
BLAKE3 Seguro 256 bits Muito rápido (em paralelo) Endereçamento de conteúdo de alto desempenho

Cálculo de SHA-256

Três maneiras rápidas de calcular um hash SHA-256:

Python:

import hashlib

data = b"hello world"
digest = hashlib.sha256(data).hexdigest()
print(digest)
# Output: b94d27b9934d3e08a52e52d7da7dabfac484efe04294e576fba1d63e8d4d0b4b

Node.js:

const { createHash } = require('crypto');

const digest = createHash('sha256')
  .update('hello world')
  .digest('hex');
console.log(digest);

Bash:

echo -n "hello world" | sha256sum

Precisa hashar algo rapidamente sem escrever código? O Gerador de Hash suporta MD5, SHA-1, SHA-256, SHA-512 e mais — diretamente do seu navegador.

Guia de decisão

Caso de uso O que usar
Deduplicação / chaves de cache MD5 ou SHA-256
Integridade de arquivos (canal confiável) O MD5 é suficiente
Integridade de arquivos (downloads, não confiável) SHA-256
Assinaturas digitais SHA-256 ou SHA-512
HMACs e autenticação de API SHA-256
Certificados TLS SHA-256
Armazenamento de senhas bcrypt, Argon2 ou scrypt — não nenhum dos acima
Endereçamento de conteúdo de alto desempenho BLAKE3
Conformidade com padrões SHA-256 (verifique os requisitos do padrão)

Um ponto importante para ser explicitado: nenhum desses algoritmos deve ser usado diretamente para hashar senhas. Eles são todos rápidos por design, o que os torna úteis para ataques de força bruta. Use bcrypt, Argon2id ou scrypt — algoritmos projetados para serem deliberadamente lentos e intensivos em memória, exatamente porque o crack de senhas é um jogo adversarial.

A resposta curta

Para novos códigos: SHA-256 por padrão. Use SHA-512 se precisar de maior tamanho de saída ou estiver hashando grandes fluxos em hardware de 64 bits. Use BLAKE3 onde precisar de alto desempenho e controlar os dois lados. Use SHA-3 apenas se tiver uma razão específica de arquitetura para permanecer independente do SHA-2.

O MD5 é aceitável para impressão interna e deduplicação onde colisões não são um problema de segurança. Não é aceitável para qualquer coisa onde um atacante possa se beneficiar de falsificar um match.

Quando tiver dúvidas, use SHA-256. Já foi a resposta certa por uma década e continuará sendo por um futuro próximo.

Quer eliminar anúncios? Fique sem anúncios hoje mesmo

Instale nossas extensões

Adicione ferramentas de IO ao seu navegador favorito para acesso instantâneo e pesquisa mais rápida

Ao Extensão do Chrome Ao Extensão de Borda Ao Extensão Firefox Ao Extensão Opera

O placar chegou!

Placar é uma forma divertida de acompanhar seus jogos, todos os dados são armazenados em seu navegador. Mais recursos serão lançados em breve!

ANUNCIADO Remover?
ANUNCIADO Remover?
ANUNCIADO Remover?

Notícias com destaques técnicos

Envolver-se

Ajude-nos a continuar fornecendo ferramentas gratuitas valiosas

Compre-me um café
ANUNCIADO Remover?