Gerador de hash
Gere de uma vez os hashes MD5, SHA-1, SHA-256, SHA-384 e SHA-512 do texto, em hex ou Base64; cole uma soma de verificação esperada para ver qual corresponde.
O que uma função de hash faz realmente
Uma função de hash criptográfica recebe uma entrada de qualquer tamanho e produz uma cadeia de bytes de comprimento fixo — um digest, ou «hash». Dê-lhe uma única letra ou um romance inteiro: o MD5 devolve sempre 16 bytes e o SHA-256 sempre 32. A mesma entrada produz sempre o mesmo digest, e mudar um único bit em qualquer ponto da entrada altera cerca de metade dos bits de saída — por isso dois arquivos quase idênticos têm hashes completamente desligados um do outro.
A propriedade crucial é que a função só funciona num sentido. Calcular o hash de um arquivo é rápido; recuperar o arquivo a partir do hash não é apenas lento, é impossível por princípio, porque uma saída de comprimento fixo não consegue codificar uma entrada ilimitada. Um hash é uma impressão digital, não uma cópia cifrada — não há nada para decifrar.
Para que servem realmente os hashes
- Verificar transferências: um projeto publica o SHA-256 de uma versão, você calcula o hash do arquivo recebido e digests iguais significam que os bytes chegaram intactos.
- Detectar alterações: sistemas de controle de versão, backup e desduplicação comparam hashes em vez de arquivos inteiros, porque comparar 32 bytes é muito mais barato do que comparar gigabytes.
- Subresource Integrity: uma página fixa o hash em Base64 de um script que carrega de uma CDN, e o navegador recusa-se a executá-lo se não corresponder.
- Armazenar senhas — mas com uma função lenta feita para isso, nunca com um hash simples. Ver abaixo.
Repare no que têm em comum: o hash é um substituto compacto de algo maior, usado para responder à pergunta «isto é a mesma coisa que eu esperava?» sem transmitir nem armazenar a coisa em si.
MD5 e SHA-1 estão quebrados — o que isso significa na prática
Uma função de hash é considerada quebrada assim que alguém consegue construir uma colisão: duas entradas diferentes que produzem o mesmo digest. As colisões de MD5 calculam-se em hardware comum desde 2004, e em 2017 o ataque SHAttered produziu dois arquivos PDF diferentes com um hash SHA-1 idêntico. É por isso que ambos os algoritmos aparecem assinalados nesta ferramenta.
A consequência prática é mais estreita do que «nunca os use». Uma colisão significa que um atacante que controle os dois arquivos pode fazer um arquivo malicioso coincidir com o digest de um inofensivo, portanto MD5 e SHA-1 já não conseguem provar que um arquivo não foi adulterado por alguém hostil. Continuam perfeitamente úteis para detectar corrupção acidental — uma transferência truncada, um bit trocado num disco — e vai continuar a encontrá-los em sistemas antigos, em cabeçalhos ETag e em manifestos de pacotes antigos que ninguém vai reescrever.
A regra prática: se a pergunta é «isto danificou-se em trânsito?», o MD5 chega. Se a pergunta é «alguém substituiu isto de propósito?», use SHA-256 ou melhor.
Nunca gere o hash de uma senha com estes
MD5, SHA-1 e até SHA-256 são concebidos para serem rápidos, e a rapidez é exatamente a propriedade errada para armazenar senhas. Uma GPU moderna calcula milhares de milhões de hashes SHA-256 por segundo, por isso um banco de dados roubado de senhas simplesmente hasheadas pode ser atacado a uma escala enorme — e como a mesma senha produz sempre o mesmo digest, as tabelas pré-calculadas tornam o ataque ainda mais barato.
Armazenar senhas exige uma função deliberadamente lenta, com salt e exigente em memória: Argon2id, scrypt ou bcrypt. Acrescentam um salt aleatório único por senha, de modo que senhas iguais não compartilham digest, e o seu custo é ajustável, de modo que cada tentativa custa ao atacante tempo e memória reais. Esta ferramenta serve para somas de verificação e impressões digitais, não para gerar hashes de senhas.
Ler e comparar digests
O mesmo digest pode ser escrito de mais do que uma maneira. O hexadecimal em minúsculas é o que as ferramentas padrão de linha de comando imprimem, e é normalmente aquilo com que vai comparar:
md5sum file.iso # Linux sha256sum file.iso # Linux shasum -a 256 file.iso # macOS Get-FileHash file.iso -Algorithm SHA256 # PowerShell (imprime em maiúsculas) certutil -hashfile file.iso SHA256 # Windows (imprime em maiúsculas)
Em hexadecimal, maiúsculas ou minúsculas não têm significado nenhum — o PowerShell e o certutil imprimem em maiúsculas, as ferramentas Unix em minúsculas, e é exatamente o mesmo valor. É por isso que a caixa de comparação desta ferramenta ignora as maiúsculas em hexadecimal. Com o Base64 é outra história: é uma codificação mais densa dos mesmos bytes, usada pelo Subresource Integrity e por várias APIs, e aí as maiúsculas contam — por isso a comparação é exata.
Um último hábito que vale a pena criar: nunca compare dois digests longos a olho para decidir se coincidem. O olho humano é muito bom a ver aquilo que espera ver, e o fato de os primeiros e os últimos caracteres coincidirem não quer dizer nada. Cole o valor esperado e deixe a comparação ser exata.
Perguntas frequentes
- O meu texto é enviado para um servidor?
- Não. Cada digest é calculado no seu navegador — a família SHA através da Web Crypto API e o MD5 através de JavaScript rodando na sua própria máquina. Nada do que escrever sai do seu dispositivo.
- Um hash pode ser revertido para recuperar o texto original?
- Não. Um hash é uma impressão digital de comprimento fixo, não uma cópia cifrada, e o original não pode ser recuperado a partir dele. Os sites que anunciam «desencriptação de MD5» limitam-se a procurar o seu hash numa tabela de entradas comuns já calculadas, o que só funciona com texto curto ou previsível.
- Por que MD5 e SHA-1 têm aqui um aviso?
- Porque em ambos as colisões são praticáveis: podem construir-se duas entradas diferentes que compartilham um digest. Isso torna-os inadequados para provar que um arquivo não foi adulterado de propósito, embora continuem úteis para pegar corrupção acidental.
- Que algoritmo devo usar?
- O SHA-256 é a escolha padrão sensata e é o que a maioria dos projetos publica hoje. O SHA-512 não é significativamente mais seguro para este fim, mas é mais rápido em hardware de 64 bits. Use MD5 ou SHA-1 apenas quando algo que não controla já os exigir.
- Posso usar isto para uma senha?
- Pode, mas não deve armazenar o resultado. Armazenar senhas exige uma função lenta e com salt como Argon2id, scrypt ou bcrypt — hashes rápidos como estes são precisamente o que torna fáceis de quebrar os bancos de dados de senhas roubados.
- Por que os hashes mudam quando acrescento um espaço ou uma quebra de linha?
- Porque os espaços fazem parte da entrada. Uma quebra de linha no fim é a razão mais comum para um hash não corresponder ao esperado — texto copiado de um terminal ou de um editor traz muitas vezes uma que não se vê.
- Lida corretamente com hebraico, árabe e emojis?
- Sim. O texto é codificado em bytes UTF-8 antes de ser processado, que é o padrão usado por todas as outras ferramentas, portanto processar «שלום» ou um emoji aqui dá o mesmo digest que md5sum ou sha256sum num arquivo UTF-8 com esses mesmos caracteres.
- Por que processa texto mas não arquivos?
- A Web Crypto não tem uma API de digest em fluxo, por isso um arquivo teria de ser lido inteiro para a memória antes de poder ser processado, e o MD5 escrito à mão seria visivelmente lento com um arquivo grande. Processar texto cobre o caso comum com honestidade, em vez de oferecer um processamento de arquivos que bloqueia a página.
Ferramentas relacionadas
- Decodificador de certificados e PEM
Leia um certificado X.509 ou uma CSR sem OpenSSL.
- Gerador de HMAC
Assine uma mensagem com uma chave, ou verifique a assinatura de um webhook.
- Depurador de códigos TOTP / 2FA
Gere e depure códigos 2FA, com a derivação completa.
- Bcrypt
Gere um hash bcrypt ou confira uma senha contra um deles.