O MD5 e o SHA-256 transformam qualquer entrada num digest de tamanho fixo, mas só um dos dois resiste quando alguém tenta quebrá-lo de propósito. O MD5 tem 128 bits e é quebrável desde 2004: um atacante consegue construir dois arquivos diferentes que dão o mesmo digest MD5, de propósito, em hardware comum. O SHA-256 tem 256 bits, e até 2026 ninguém publicou uma colisão contra ele. Use SHA-256 sempre que um arquivo, uma mensagem ou uma assinatura possam ser moldados por alguém que quer um resultado específico. O MD5 ainda serve para um único trabalho: avisar que um download não foi corrompido por acidente, quando ninguém envolvido está tentando te enganar.
O que muda de fato entre os dois algoritmos
O tamanho do digest é a diferença visível, mas não é o motivo de um estar quebrado e o outro não.
| MD5 | SHA-256 | |
|---|---|---|
| Tamanho do digest | 128 bits, 32 caracteres hex | 256 bits, 64 caracteres hex |
| Padronizado | 1992, RFC 1321 | 2001, FIPS 180-2, família SHA-2 |
| Colisões encontradas | Sim, desde 2004 | Nenhuma publicada |
| Ataques de pré-imagem | Nenhum prático | Nenhum prático |
| Serve para assinaturas, certificados, qualquer coisa adversarial | Não | Sim |
| Serve para pegar corrupção acidental | Sim | Sim, e mais lento sem ganho nenhum aqui |
Um digest curto sozinho não tornaria um algoritmo inseguro — vários designs antigos e mais estreitos nunca foram quebrados. O que aconteceu com o MD5 é específico e tem data: todo o argumento de segurança de uma função hash depende de ninguém conseguir achar duas entradas que colidam, e para o MD5 isso deixou de ser verdade há duas décadas.
Resistência a colisão não é a mesma coisa que resistência a pré-imagem
Duas garantias diferentes acabam jogadas no mesmo saco de "hashes podem ser quebrados", e o MD5 fica em lados opostos de cada uma.
Uma colisão significa que um atacante constrói duas entradas diferentes e escolhe as duas, então ambas caem no mesmo digest. Em agosto de 2004, Xiaoyun Wang, Dengguo Feng, Xuejia Lai e Hongbo Yu publicaram um método que faz isso com o MD5 em cerca de uma hora no hardware daquele ano; em qualquer máquina atual leva segundos. Essa é uma quebra real, repetível e prática.
Um ataque de pré-imagem significa que um atacante parte de um digest que ele não escolheu — um que você já publicou — e precisa achar qualquer entrada que o produza. Ninguém tem um ataque de pré-imagem prático contra o MD5 até 2026. Esse é o motivo inteiro de o MD5 ainda pegar um download corrompido: o checksum do seu arquivo nunca foi um valor que um atacante escolheu com antecedência, então a resistência de que esse trabalho precisa é justamente a que o MD5 ainda tem.
Essa distinção decide tudo sobre se o MD5 é seguro num lugar específico. Se um atacante consegue produzir ou influenciar o arquivo antes de você aplicar o hash, você precisa de resistência a colisão, e o MD5 não tem nenhuma. Se você só está conferindo se os bytes que recebeu batem com os que uma fonte confiável gerou, o trabalho precisa de algo mais parecido com resistência a pré-imagem, e o MD5 ainda tem o suficiente disso.
O que uma colisão de prefixo escolhido realmente dá a um atacante
A quebra de 2004 produz dois blobs colidentes construídos do zero — inúteis a menos que você consiga fazer os dois serem aceitos como documentos legítimos. Uma técnica seguinte, a colisão de prefixo escolhido, foi a que tornou o MD5 perigoso na prática.
Uma colisão de prefixo escolhido deixa um atacante partir de dois documentos arbitrários que ele realmente quer — não blobs inventados para a ocasião — e anexar um preenchimento calculado com cuidado a cada um para que as versões preenchidas compartilhem um digest MD5. Em dezembro de 2008, uma equipe que incluía Alexander Sotirov e Marc Stevens usou exatamente isso para forjar uma autoridade certificadora intermediária impostora: eles conseguiram que uma autoridade certificadora real, que ainda assinava com MD5, assinasse um certificado de aparência comum, e o preenchimento fazia essa mesma assinatura valer igualmente para um segundo certificado que os pesquisadores tinham construído — um com poder de emitir certificados para qualquer domínio, confiável para qualquer navegador que confiasse em assinaturas MD5. É isso que a resistência a colisão garante, dito numa frase só: sem ela, uma assinatura sobre um documento é uma assinatura sobre qualquer outra coisa que o algoritmo do signatário deixou alguém mais colar do lado.
Por que um checksum do lado do arquivo não prova nada
Essa parte não tem nada a ver com qual algoritmo você escolhe. Se uma página de download te mostra um arquivo e um checksum no mesmo fôlego, quem consegue trocar o arquivo consegue trocar o número embaixo dele na mesma edição. Um checksum SHA-256 numa página comprometida é tão convincente quanto um MD5: nada. Você verificou o arquivo contra ele mesmo, não contra algo independente.
Autenticidade de verdade precisa que o checksum — ou melhor, uma assinatura digital completa — chegue por um caminho que quem pode adulterar o arquivo não controle também: uma chave de assinatura em que você já confia, conferida com algo como gpg --verify, ou um checksum publicado em algum lugar separado do download, como uma lista de discussão de segurança ou um domínio completamente diferente. O gerador de hash vai te dizer com honestidade se os bytes que você tem batem com o número que te deram; ele não tem como te dizer se aquele número já foi confiável em algum momento.
Quando o MD5 ainda é a ferramenta certa
Em nenhum lugar adversarial, e em bastante coisa que não é. O MD5 continua bem, e costuma ser mais rápido, para trabalhos onde ninguém está tentando produzir um resultado específico: detectar uma transferência de arquivo truncada, deduplicar arquivos nos quais você já confia pelo conteúdo, marcar objetos em cache, ou conferir contra um checksum publicado pela mesma equipe que fez o software, por um canal em que você já confia por outros motivos. Nada disso exige resistência a colisão, porque ninguém está fabricando uma entrada adversarial: a corrupção que você está procurando é acidental, não projetada.
O que o MD5 nunca mais deveria tocar: uma assinatura digital, um certificado, um token de redefinição de senha, qualquer coisa em que um digest substitua um documento que outra pessoa possa ter moldado para colidir com ele. O SHA-256 quase não custa nada a mais em hardware atual e elimina a questão por completo.
O gerador de hash calcula MD5 e SHA-256 lado a lado para o mesmo texto ou arquivo, então você vê o quanto eles reagem diferente a uma mudança de um único caractere, e pode colar um checksum publicado para conferir contra qualquer um dos dois. Nada sai da sua máquina.
Se você quer o modelo completo por trás de tudo isso — o que um digest realmente é, por que não dá para revertê-lo, e onde o hashing deixa de ser a ferramenta certa — o que é uma função hash e o que não é cobre o resto.
Perguntas frequentes
O MD5 ainda é seguro?
Não para nada adversarial. Um atacante consegue construir dois arquivos diferentes que produzam o mesmo digest MD5 de propósito, o que quebra qualquer uso em que um digest substitua um documento, como uma assinatura ou um certificado. Para pegar um download corrompido por acidente, o MD5 continua bem, porque ninguém projetou seu arquivo para colidir com nada.
Qual é a diferença entre um ataque de colisão e um de pré-imagem?
Um ataque de colisão deixa o atacante escolher duas entradas diferentes e fazer com que compartilhem um digest, que foi o que quebrou o MD5 em 2004. Um ataque de pré-imagem parte de um digest que o atacante não escolheu e tenta achar qualquer entrada que o produza, o que continua impraticável contra o MD5. Quase toda fraqueza real do MD5 é um ataque de colisão, não de pré-imagem.
Posso confiar no checksum publicado ao lado de um download?
Só até onde você confia na página onde ele está. Se quem controla o download também consegue editar o checksum ao lado, uma coincidência só confirma que o arquivo bate consigo mesmo, seja MD5, SHA-256 ou qualquer outra coisa. A verificação de verdade precisa de uma assinatura ou de um checksum entregue por um canal separado e confiável.
Devo trocar o MD5 pelo SHA-256 em tudo?
Para tudo em que alguém possa querer adulterar a entrada — assinaturas, certificados, tokens de segurança — sim, e praticamente não custa nada fazer isso em hardware atual. Para trabalhos não adversariais, como deduplicar arquivos confiáveis ou detectar um download truncado, o MD5 continua funcionando e trocar não traz ganho nenhum.
O que diferenciou o ataque de MD5 de 2008 do de 2004?
A colisão de 2004 produziu dois blobs sem sentido construídos para coincidir entre si. A técnica de prefixo escolhido de 2008 deixou os atacantes partirem de dois documentos que eles realmente queriam, incluindo um pedido de assinatura de uma autoridade certificadora real, e preencherem cada um para que compartilhasse um digest MD5 com o outro — o que foi o que permitiu forjar uma autoridade certificadora impostora confiável para navegadores comuns.
Última atualização 24 de setembro de 2026