TK TaskKit
Ferramentas para programadores

Gerador de hashes MD5

Calcula checksums MD5 de 128 bits para texto ou ficheiros no teu navegador. Comum para verificações antigas de integridade e ETags. Não é resistente a colisões — usa SHA-256 quando a integridade for importante para a segurança.

Entrada
Hashes
Cola texto para calcular MD5, SHA-1, SHA-256, SHA-384 e SHA-512.

As entradas ficam neste dispositivo. Cada ferramenta para programadores no TaskKit corre inteiramente no teu navegador. Tokens, payloads e texto colado não são transmitidos para servidores do TaskKit nem para terceiros.

O que esta ferramenta faz

Calcula o hash MD5 de qualquer texto ou ficheiro no teu navegador, devolvendo um digest hexadecimal de 32 caracteres. O MD5 é uma função de hash de 128 bits do RFC 1321, desenhada por Ron Rivest em 1991. É rápida — ficheiros de vários gigabytes fazem hash em segundos — mas não é resistente a colisões: dois inputs distintos podem ser fabricados para produzirem o mesmo MD5, e isso já foi demonstrado fora do laboratório desde 2005.

Quando o MD5 está bem

  • ETags e caches endereçadas por conteúdo. Uma cache web que faz hash dos seus objetos com MD5 está a usar o hash como uma chave rápida de bucket, não como garantia de segurança. O modelo de ataque é "dois clientes produzem acidentalmente o mesmo conteúdo", e o MD5 ainda lida bem com isso.
  • Deduplicação de ficheiros num conjunto de confiança. Se controlas os inputs (os teus próprios backups, os documentos da equipa), as colisões MD5 são astronomicamente improváveis sem um atacante.
  • Comparar com um checksum legado. Downloads de software antigos, listas de mirror FTP e documentação anterior a 2010 muitas vezes só publicam MD5. Verificar esse número é para isso que o MD5 serve.
  • Fingerprint rápido de ficheiros antes de transferir. Dois engenheiros a comparar se têm "o mesmo ficheiro" beneficiam da velocidade do MD5; o modelo de ameaça é o erro humano, não a colisão adversarial.

Quando o MD5 não está bem

  • Armazenamento de palavras-passe. Usa um hash de palavra-passe lento e com salt como bcrypt, scrypt ou Argon2. O MD5 é demasiado rápido — um GPU moderno calcula milhares de milhões de MD5 por segundo, pelo que qualquer base de dados vazada é decifrada com rainbow tables em minutos.
  • Assinaturas digitais ou certificados. As colisões são reais. Em 2008, investigadores construíram certificados de CA fraudulentos explorando colisões MD5. Qualquer coisa que permita ao atacante escolher o input está partida.
  • Verificação de integridade contra um atacante determinado. Se o atacante consegue fabricar o ficheiro do qual estás a fazer hash, o MD5 não te protege. O SHA-256 sim.
  • Qualquer coisa em que compliance moderno requeira SHA-2 ou SHA-3. PCI DSS, FIPS 140-3 e a maioria dos padrões governamentais proíbem o MD5 para novas aplicações desde o final dos anos 2000.

Vetores de teste

Verifica a implementação contra os vetores de teste canónicos do RFC 1321:

  • String vazia ""d41d8cd98f00b204e9800998ecf8427e
  • "a"0cc175b9c0f1b6a831c399e269772661
  • "abc"900150983cd24fb0d6963f7d28e17f72
  • "message digest"f96b697d7cb7938d525a2f31aaf161d0
  • "The quick brown fox jumps over the lazy dog"9e107d9d372bb6826bd81d3542a419d6

Cola qualquer um destes na entrada acima; o digest deve corresponder exatamente.

Notas

Porque é que o hash tem 32 caracteres e não 16? O MD5 produz 128 bits = 16 bytes. Cada byte é renderizado como 2 caracteres hex, dando 32 caracteres visíveis. O digest subjacente são sempre 16 bytes.

O MD5 vaza informação sobre o input? Criptograficamente, não — dado um hash, não consegues recuperar o input. Mas para inputs curtos ou estruturados (palavras únicas, palavras-passe comuns), podes consultar o hash numa rainbow table pública em milissegundos. É por isso que o MD5 é inadequado para armazenamento de palavras-passe mesmo quando "salgado fracamente".

Porque é que o meu MD5 difere do que o md5sum devolve? Provavelmente o input difere por uma newline final. echo "hello" adiciona \n; colar "hello" aqui não. Usa echo -n ou faz hash do ficheiro diretamente com o seletor de ficheiros.

Ferramentas relacionadas

  • Gerador de hashes — calcula MD5, SHA-1, SHA-256, SHA-384 e SHA-512 lado a lado
  • SHA-256 — o defeito moderno para hashing relevante para segurança
  • Base64 — combina com MD5 para chaves de armazenamento endereçadas por conteúdo