MD5 vs SHA-256: qual usar e quando nenhum dos dois serve
MD5 e SHA-256 são funções de hash, mas resolvem problemas diferentes hoje. E, para o caso mais comum — guardar senha — a resposta certa não é nenhum dos dois.
Comparação direta
| MD5 | SHA-256 | |
|---|---|---|
| Tamanho do hash | 128 bits (32 caracteres hex) | 256 bits (64 caracteres hex) |
| Ano | 1992 | 2001 |
| Colisões conhecidas | Sim, produzíveis em segundos | Nenhuma conhecida |
| Uso em segurança | Desaconselhado | Recomendado |
| Velocidade | Muito rápido | Rápido |
| Uso ainda válido | Verificar integridade sem adversário | Assinatura, integridade, derivação |
Por que MD5 saiu de cena
Uma função de hash criptográfica precisa tornar inviável produzir duas entradas com o mesmo resultado. Em MD5 isso deixou de ser verdade: colisões podem ser geradas em segundos num computador comum, o que permite forjar documento, certificado ou assinatura.
MD5 continua útil onde não existe adversário — conferir se um download corrompeu, por exemplo. Onde alguém pode ganhar algo forjando o dado, ele não serve mais.
Nenhum dos dois para senha
MD5 e SHA-256 foram projetados para serem rápidos, e é justamente por isso que não servem para senha: uma GPU calcula bilhões de hashes por segundo, o que torna a força bruta viável.
Senha exige hash deliberadamente lento e com salt, como bcrypt, scrypt ou Argon2. Eles têm um fator de custo ajustável, que se aumenta conforme o hardware evolui.
// ✗ nunca faça isso com senha
const hash = crypto.createHash("sha256").update(senha).digest("hex");
// ✓ bcrypt: lento de propósito, com salt embutido
import bcrypt from "bcryptjs";
const hash = await bcrypt.hash(senha, 12);
const confere = await bcrypt.compare(senha, hash);Como escolher
- Verificar integridade de download sem adversário: MD5 ou SHA-256, tanto faz
- Assinatura, certificado, verificação de conteúdo em contexto de segurança: SHA-256
- Guardar senha de usuário: bcrypt ou Argon2, nunca hash rápido
- Autenticar mensagem com segredo compartilhado: HMAC-SHA-256
- Identificador estável de conteúdo, sem contexto de segurança: SHA-256 truncado é uma escolha comum
Perguntas frequentes
- Ainda posso usar MD5 para alguma coisa?
- Sim, para verificar integridade onde ninguém ganha nada forjando o arquivo — conferir se um download corrompeu, por exemplo. Em qualquer contexto de segurança, use SHA-256.
- SHA-256 é reversível?
- Não. Hash é de mão única. O que existe são ataques de dicionário e tabelas pré-calculadas, que só funcionam para entradas curtas ou previsíveis — e é exatamente por isso que senha precisa de salt.