Sobre o Gerador de Hash
Este gerador de hash gratuito calcula os hashes MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de qualquer texto, todos ao mesmo tempo e em direto à medida que escreve.
Os hashes são calculados no seu navegador através da API Web Crypto — o seu texto nunca é enviado.
O que é um hash
Uma função de hash recebe uma entrada de qualquer comprimento e produz uma impressão digital de comprimento fixo. Dê-lhe um único caractere ou um livro inteiro; o SHA-256 devolve 64 caracteres hexadecimais em qualquer dos casos.
Três propriedades tornam-na útil:
Determinística. A mesma entrada dá sempre o mesmo hash. Sempre, em qualquer máquina, para sempre.
Efeito de avalanche. Mude um único bit da entrada e cerca de metade dos bits de saída inverte-se. hello e hellp produzem hashes sem qualquer semelhança visível. Não existe «quase» — um hash ou corresponde exatamente ou não lhe diz nada.
Sentido único. Não é possível recuar de um hash até à entrada. A função descarta informação de propósito e não existe inversa.
Esta última propriedade é o ponto essencial, e é por isso que um hash não é cifragem.
Fazer hash não é cifrar
A cifragem é de dois sentidos: com a chave recupera o original. É esse todo o seu propósito.
O hash é de sentido único por conceção. Não há chave nem caminho de volta. Um documento de 500 páginas e uma única letra tornam-se ambos 64 caracteres — a maior parte da informação simplesmente desapareceu.
Por isso, a pergunta a que um hash responde nunca é «o que era isto?» mas sim «isto é igual àquilo?». Compare dois hashes: iguais significa que as entradas eram iguais; diferentes significa que não eram.
Daqui decorre um equívoco comum. «Decifrar» um hash MD5 não existe. O que os sites de consulta fazem na realidade é calcular antecipadamente o hash de milhares de milhões de entradas comuns e verificar se a sua consta da tabela. Não estão a inverter a função; estão a reconhecer um valor que já viram. Tudo o que seja invulgar não está na tabela.
MD5 e SHA-1 estão quebrados — eis o que isso significa
Ambos continuam a aparecer por toda a parte, e ambos são inseguros para fins de segurança. Vale a pena saber exatamente de que forma.
Uma colisão são duas entradas diferentes que produzem o mesmo hash. Isso deveria ser inviável. Para o MD5 é hoje trivial — produzem-se colisões em segundos num computador comum. O SHA-1 caiu em 2017, quando a Google demonstrou dois PDF diferentes com o mesmo hash SHA-1, e o ataque só se tornou mais barato desde então.
Porque é que isto importa: se alguém conseguir construir dois ficheiros com hashes coincidentes, um hash deixa de provar que um ficheiro é aquele que esperava. Um documento assinado poderia ser trocado por outro documento com a mesma impressão digital.
Onde o MD5 ainda serve: detetar corrupção acidental. Se quiser saber se uma transferência chegou intacta, ou se dois ficheiros no seu disco são duplicados, o MD5 funciona e é rápido. A corrupção aleatória não produzirá uma colisão.
Onde não serve: em tudo aquilo em que alguém possa estar a tentar enganá-lo — verificar a autenticidade de uma transferência, assinar ou guardar palavras-passe.
Use SHA-256 para tudo o que importe. Não tem nenhum ataque prático de colisão conhecido, é rápido e é a opção predefinida nos sistemas modernos. O SHA-512 não é significativamente mais seguro na maioria dos casos, embora possa ser mais rápido em hardware de 64 bits.
Nunca guarde palavras-passe com um hash simples
Este é o uso indevido de funções de hash com consequências mais graves, e causa violações reais.
Calcular o hash SHA-256 de uma palavra-passe e guardar o resultado não chega. O problema são os hashes rápidos: o SHA-256 foi concebido para ser veloz, e o hardware moderno calcula milhares de milhões por segundo. Um atacante que roube a sua base de dados simplesmente experimenta todas as palavras-passe prováveis até os hashes coincidirem.
Dois problemas adicionais agravam a situação. Palavras-passe iguais produzem hashes iguais, pelo que um atacante vê de imediato que contas partilham uma palavra-passe. E as tabelas pré-calculadas fazem com que as palavras-passe comuns sejam reconhecidas sem qualquer esforço.
A abordagem correta usa uma função de hash para palavras-passe construída para ser lenta e exigente em memória: bcrypt, scrypt ou Argon2. Acrescentam um sal aleatório único por palavra-passe, para que palavras-passe iguais deem hashes diferentes, e são deliberadamente dispendiosas — ajustadas para que uma única verificação demore uma fração de segundo percetível, tornando impraticáveis milhares de milhões de tentativas.
Use uma biblioteca adequada. O armazenamento de palavras-passe não é algo que se construa a partir de primitivas de hash.
Para que servem realmente os hashes
- Verificar transferências — comparar a soma de verificação publicada com o ficheiro recebido
- Detetar ficheiros duplicados — hashes iguais significam conteúdos iguais
- Deteção de alterações — este ficheiro, registo ou configuração foi modificado?
- Endereçamento por conteúdo — o Git dá a cada commit e a cada objeto o nome do seu hash
- Integridade dos dados — confirmar que uma transferência ou uma cópia de segurança chegou sem corrupção
- Chaves de cache — um identificador curto e estável derivado de conteúdo mais longo
- Assinaturas digitais — calcula-se o hash do documento e depois assina-se o hash
Como usar
- Escreva ou cole o seu texto
- Os hashes atualizam-se em direto para cada algoritmo
- Copie qualquer hash com o respetivo botão de cópia
Bom saber
- O comprimento da saída é fixo. O MD5 dá 32 caracteres hexadecimais, o SHA-1 dá 40, o SHA-256 dá 64, o SHA-512 dá 128 — independentemente do tamanho da entrada.
- Tudo conta. Um espaço final, uma mudança de linha no fim de um ficheiro ou um fim de linha diferente altera completamente o hash. É a razão habitual para uma soma de verificação «dever» corresponder e não corresponder.
- A codificação importa. Esta ferramenta calcula o hash do seu texto como UTF-8. Calcular o hash dos mesmos caracteres noutra codificação dá um resultado diferente.
- As maiúsculas são convenção, não significado. Os hashes são muitas vezes mostrados em maiúsculas ou minúsculas; o valor é o mesmo. Compare sem distinguir maiúsculas.
- Uma entrada vazia também tem hash — uma constante bem conhecida para cada algoritmo.
- Para ficheiros grandes é melhor usar as ferramentas do próprio sistema operativo: certutil -hashfile no Windows, shasum -a 256 no macOS e no Linux.
Perguntas frequentes
Qual é a diferença entre hash e cifragem?
A cifragem é reversível — com a chave correta recupera os dados originais, que é todo o objetivo. O hash é de sentido único por conceção: produz uma impressão digital de comprimento fixo e não há caminho de volta, porque a maior parte da informação é descartada de propósito. O hash responde a «estas duas coisas são iguais?», nunca a «o que era isto?».
Um hash pode ser decifrado ou revertido?
Não. O que os sites de consulta oferecem não é reversão, mas reconhecimento: calcularam previamente o hash de milhares de milhões de cadeias comuns e verificam se a sua aparece na tabela. Palavras-passe comuns e palavras de dicionário são encontradas de imediato; tudo o que é invulgar não está na tabela nem alguma vez estará. A própria função não pode ser invertida.
O MD5 ainda é seguro de usar?
Apenas para detetar corrupção acidental, como verificar se uma transferência chegou intacta ou encontrar ficheiros duplicados. Contra um ataque deliberado está completamente quebrado — dois ficheiros diferentes com o mesmo MD5 podem ser criados em segundos. O SHA-1 também está quebrado, demonstrado em 2017 com PDF em colisão. Use SHA-256 para tudo o que envolva confiança.
Que algoritmo de hash devo usar?
SHA-256 para quase tudo. É rápido, amplamente suportado e não tem nenhum ataque prático de colisão conhecido. O SHA-512 é uma alternativa razoável e pode ser mais rápido em sistemas de 64 bits, embora não seja significativamente mais seguro na prática. Reserve o MD5 e o SHA-1 para compatibilidade com sistemas existentes e para verificações sem implicações de segurança.
Posso usar isto para gerar o hash das palavras-passe do meu site?
Por favor, não. Hashes rápidos como o SHA-256 são a ferramenta errada: o hardware consegue calcular milhares de milhões por segundo, pelo que uma base de dados roubada é quebrada por força bruta rapidamente. Use bcrypt, scrypt ou Argon2, que acrescentam um sal único por palavra-passe e são deliberadamente lentos. Recorra sempre a uma biblioteca consolidada em vez de montar você mesmo o armazenamento de palavras-passe.
Porque é que o meu hash não corresponde ao publicado no site?
Quase sempre por uma diferença invisível na entrada. Um espaço final, uma mudança de linha a mais ou a menos no fim, ou fins de linha do Windows em vez dos do Unix alteram completamente o hash — é o efeito de avalanche a funcionar corretamente. Verifique também se está a comparar o mesmo algoritmo, já que uma página pode listar vários.
O meu texto é enviado para um servidor?
Não. Os hashes SHA são calculados pela implementação Web Crypto integrada no seu navegador e o MD5 é calculado em JavaScript, ambos inteiramente no seu dispositivo. Nada é transmitido nem guardado, e a ferramenta funciona com a ligação desligada.
Ferramentas relacionadas
- Soma de verificação de ficheiro — calcular o hash de um ficheiro real em vez de texto colado
- Gerador de palavras-passe — criar palavras-passe fortes que valha a pena guardar corretamente
- Codificar / descodificar Base64 — codificação que, ao contrário do hash, é reversível
- Descodificador JWT — tokens cujas assinaturas assentam nestas funções de hash