Gerador de Hash

Gere hashes SHA-1, SHA-256 e SHA-512 a partir de texto.

Três Hashes, Um Clique

Introduza qualquer texto e a ferramenta calcula os seus digests SHA-1, SHA-256 e SHA-512 em simultâneo usando a Web Crypto API integrada no navegador — a mesma implementação auditada em que o TLS confia, não uma reimplementação em JavaScript. Cada resultado é mostrado em hexadecimal minúsculo; clique em qualquer hash para o copiar.

Exemplo — o SHA-256 de Hello World:

a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e

Mude um carater (Hello world, w minúsculo) e cada bit da saída se reordena — é o efeito de avalanche, e é por isso que os hashes funcionam como impressões digitais.

Escolher um Algoritmo

AlgoritmoSaídaEstadoUse-o para
SHA-1160 bits / 40 carateres hexQuebrado para colisões (2017)Apenas compatibilidade legada — IDs de objetos git, checksums antigos
SHA-256256 bits / 64 carateres hexSeguro, padrão da indústriaIntegridade de ficheiros, assinaturas, impressão digital geral
SHA-512512 bits / 128 carateres hexSeguroMargem extra; muitas vezes mais rápido que SHA-256 em CPUs de 64 bits

Use por defeito o SHA-256 a não ser que algo o obrigue a outra escolha. As colisões de SHA-1 foram demonstradas na prática — duas entradas diferentes a produzir o mesmo hash — por isso nunca o use onde um atacante possa beneficiar de forjar uma correspondência. O MD5 está ainda mais degradado e, por essa razão, não é oferecido aqui.

Para Que Servem os Hashes — e Para Que Não

  • Verificações de integridade: compare o SHA-256 publicado de um ficheiro descarregado com o seu próprio cálculo; uma correspondência prova que os bytes são idênticos.
  • Deduplicação e chaves de cache: faça o hash do conteúdo, use o digest como ID.
  • Endereçamento por conteúdo e commits: o git, o IPFS e os registos de contentores identificam todos o conteúdo por hash.
  • Não é encriptação: o hash é unidirecional — não há chave nem desencriptação. Não pode recuperar a entrada a partir do digest.
  • Não é para palavras-passe, nem mesmo SHA-256: os hashes simples calculam milhares de milhões de tentativas por segundo num GPU. O armazenamento de palavras-passe precisa de um algoritmo deliberadamente lento e com sal — bcrypt, scrypt ou Argon2. Se precisar de uma palavra-passe forte, use o gerador de palavras-passe.

Determinístico, Local, Privado

A mesma entrada produz sempre o mesmo digest — esse determinismo é a própria razão de ser, e significa também que qualquer coisa adivinhável (um número de telefone, uma palavra de dicionário) pode ser revertida por tabelas de consulta de força bruta, que é exatamente porque os hashes sem sal falham para palavras-passe. Todo o hash aqui corre inteiramente no seu navegador via crypto.subtle.digest(); o texto que introduz nunca sai da sua máquina. Para identificadores aleatórios em vez de impressões digitais de conteúdo, use o gerador de UUID.

Perguntas frequentes

Que algoritmos de hash são suportados?
SHA-1, SHA-256 e SHA-512 — todos calculados de uma vez via a Web Crypto API do navegador. O SHA-256 é o padrão recomendado; o SHA-1 é incluído apenas para compatibilidade legada.
Posso reverter um hash para obter o texto original?
Não. Os hashes criptográficos são funções unidirecionais. A única "reversão" é adivinhar entradas e comparar digests, o que funciona para entradas curtas ou comuns — mais uma razão para nunca fazer hash de palavras-passe sem sal e um algoritmo lento.
Porque não há opção MD5?
O MD5 está criptograficamente quebrado há duas décadas — as colisões podem ser geradas em segundos — e a Web Crypto API deliberadamente não o implementa. Para qualquer novo uso, o SHA-256 é a escolha correta.
O SHA-256 é seguro para armazenar palavras-passe?
Por si só, não. Os hashes rápidos permitem milhares de milhões de tentativas por segundo num GPU. Use um algoritmo dedicado de hash de palavras-passe — bcrypt, scrypt ou Argon2 — que acrescenta sal e um fator de trabalho ajustável.
O meu texto é enviado para algum lado quando faço o hash?
Não. O hash corre inteiramente no seu navegador através de crypto.subtle.digest(); a entrada nunca sai do seu dispositivo.