Cookies para estatística e publicidade
Usamos cookies de estatística e de publicidade, ambos enviados ao Google. Recusar não muda nada do que você vê.Ler a página de privacidade
Escreva ou cole alguma coisa e o MD5 aparece enquanto você digita. Convém dizer logo: o MD5 está quebrado para tudo que envolva segurança, e continua razoável como checksum contra dano acidental ou como chave de cache. Esta página calcula porque existem motivos legítimos para precisar dele, e explica quais motivos não são.
Onde roda
Nada é enviado, porque não há arquivo — a conta é feita nesta página.
Sem fila, sem conta
Responde na velocidade da sua máquina e nunca pergunta quem você é.
Quantas vezes quiser
Nada é contado nem limitado — responder de novo não nos custa nada.
Quebrado quer dizer que dá para fabricar duas entradas diferentes com o mesmo hash, e não em teoria: num notebook, em segundos. Isso destrói qualquer uso em que o hash sirva para afirmar que um conteúdo não mudou — assinatura, certificado, verificação de integridade diante de alguém que pode manipular o original.
Não quer dizer que o hash seja reversível. Continua não havendo jeito prático de recuperar o texto a partir do valor, e por isso o MD5 preserva um uso honesto: detectar corrupção acidental, que não tem adversário por trás. Um arquivo que estragou na cópia não escolhe o hash dele.
Justamente pelo que ele faz bem: é rapidíssimo. Uma placa de vídeo comum testa bilhões de candidatos por segundo contra um MD5, então uma tabela de senhas com esse hash é quebrada em horas, e as senhas comuns em segundos.
Para senha é preciso um algoritmo desenhado para ser lento e caro em memória — bcrypt, scrypt ou Argon2 —, e a lentidão não é efeito colateral, é o objetivo. Se você chegou nesta página por causa de uma tabela de usuários, a resposta está em outro lugar.
Aparece com frequência a ideia de que basta acrescentar um sal e o MD5 volta a servir para senha. O sal resolve exatamente uma coisa: impede que uma tabela pré-calculada sirva para todos os usuários de uma vez, e obriga o atacante a atacar cada senha separadamente.
O que ele não toca é a velocidade, e é a velocidade que decide. Atacar uma senha por vez a bilhões de tentativas por segundo continua sendo barato, e para a maioria das senhas reais continua terminando no mesmo dia. Um MD5 salgado é melhor do que um MD5 puro e continua não sendo um armazenamento de senha.
Como chave de cache é adequado: é preciso que entradas iguais deem valores iguais e que entradas diferentes quase nunca coincidam, e ele cumpre as duas. Ser rápido, que é o que o descarta para senha, aqui é vantagem.
Ele também continua aparecendo em integrações antigas que exigem exatamente esse valor e em verificação de download de projetos que publicam o MD5 deles há vinte anos. Nesse último caso ele protege contra um espelho que serviu um arquivo truncado, não contra um espelho malicioso — e essa distinção quase nunca é feita de forma explícita.
Um MD5 são 128 bits, escritos como 32 dígitos hexadecimais. Sempre o mesmo comprimento, seja a entrada uma letra ou um livro inteiro, porque um hash resume para um tamanho fixo por definição.
Daí sai uma conferência rápida e útil: se um valor que alguém chama de MD5 não tem 32 caracteres, ele não é. Quarenta são SHA-1 e sessenta e quatro são SHA-256. É um erro de rotulagem mais frequente do que parece, sobretudo em documentação herdada.
Quase todo editor e toda ferramenta Unix escrevem uma quebra de linha no fim de um arquivo — o POSIX define uma linha de texto como algo que termina em uma. Um campo de texto no navegador não faz isso. Por isso o MD5 de um arquivo que contém uma palavra só não bate com o MD5 dessa palavra digitada aqui.
É a segunda causa mais frequente de dois hashes «do mesmo conteúdo» não fecharem, e é especialmente chata porque os dois lados parecem obviamente corretos. Quem estiver conferindo com o `md5sum` precisa contar com esse byte, ou trabalhar com o arquivo e não com o conteúdo dele.
O hash é calculado sobre bytes, e aqui o texto vira bytes em UTF-8. Um `ç` são dois bytes e um `ã` também, então um texto em português tem mais bytes do que caracteres e o hash reflete esses bytes específicos.
Se outra ferramenta devolve um valor diferente para o mesmo texto visível, a codificação é a primeira coisa para olhar: em Latin-1 o `ç` teria sido um byte. Nenhum dos dois programas está errado — eles estão gerando hash de textos diferentes, e a discordância vive uma camada abaixo do hash.
Uma chave de cache precisa de duas propriedades: entradas iguais darem o mesmo valor e entradas diferentes quase nunca coincidirem. O MD5 tem as duas, e a velocidade dele — o motivo pelo qual não serve para senha — aqui é exatamente o que se quer.
Ele só fica atacável se alguém ganhar alguma coisa fazendo duas requisições diferentes caírem na mesma chave, por exemplo para receber a resposta alheia guardada em cache. Onde as chaves são montadas com dados enviados pelo usuário e o cache é compartilhado entre sessões, isso merece pensamento; onde elas saem de parâmetros internos, não.
O HMAC usa uma função de hash dentro de uma construção com chave, e o ataque de colisão que derruba o MD5 puro não derruba o HMAC-MD5: não há quebra prática dele até hoje. É por isso que ele ainda aparece vivo em protocolos antigos sem que aquilo seja, por si só, uma falha aberta.
Isso não é uma recomendação. Para qualquer coisa nova, HMAC-SHA-256 faz o mesmo trabalho sem a conversa; a diferença é que encontrar HMAC-MD5 numa integração legada não é motivo de pânico, enquanto encontrar MD5 puro validando uma assinatura é.
Este site tem outra página que calcula checksum e essa aceita arquivo. Elas estão separadas de propósito porque respondem a perguntas diferentes: aquela responde «este download chegou inteiro?», e esta responde «qual é o hash deste valor?».
Juntar as duas colocaria uma área de arrastar arquivo na frente de quem quer digitar uma string e um campo de texto na frente de quem tem um arquivo, e sobraria metade da interface para cada um. O algoritmo é o mesmo; a pergunta não é.
Um dos motivos mais comuns de precisar de um MD5 hoje é o Gravatar: o endereço da imagem é o hash do e-mail da pessoa, em minúsculas e sem espaços nas pontas. Reproduzir esse valor à mão é exatamente o tipo de tarefa para a qual esta página existe.
E ele é também o exemplo mais claro do argumento sobre anonimização. Um endereço de Gravatar circula em páginas públicas e contém o hash de um e-mail; quem tem uma lista de e-mails descobre quais deles aparecem em quais sites simplesmente calculando os hashes e comparando. O valor não é o e-mail e leva direto a ele.
O que se cola num campo desses costuma ser um valor que não deveria se mover: um dado de uma linha que está sendo depurada, um candidato a senha para conferir, um identificador. Como a conta acontece na página, nada disso é compartilhado conosco.
Vale lembrar o outro lado: hashear um dado pessoal não o anonimiza quando o conjunto de entradas possíveis é pequeno. Um CPF tem nove dígitos livres e dois verificadores, ou seja menos de um bilhão de valores — percorrer todos eles com MD5 é trabalho de minutos numa placa de vídeo. A LGPD só tira do escopo o dado anonimizado quando a anonimização não pode ser revertida com esforço razoável, e aqui pode.
Não de forma direta: a função não é reversível. O que se faz é testar candidatos em altíssima velocidade, e por isso o MD5 de uma senha comum já está resolvido de antemão em tabelas públicas.
Não. É rápido demais: uma placa de vídeo testa bilhões de candidatos por segundo. Para senha são necessários bcrypt, scrypt ou Argon2, cuja lentidão é o objetivo e não um defeito.
Quase sempre por causa da quebra de linha final que as ferramentas Unix escrevem no fim de um arquivo e um campo de texto não tem. Esse único byte muda o hash inteiro.
Contra corrupção acidental, vale: um arquivo truncado não escolhe o hash dele. Contra alguém capaz de trocar o arquivo e a soma publicada junto, não — para isso é preciso SHA-256.
Não. A conta acontece nesta página. Considere ainda que o hash de um dado pessoal continua rastreável até ele se o conjunto de valores possíveis for pequeno, como é o caso de um CPF.