Gerador de hash

Calcule resumos MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3, Keccak-256, RIPEMD-160, BLAKE2b ou BLAKE2s de qualquer texto ou ficheiro — útil para somas de verificação, controlos de integridade e chaves de cache. Cole um resumo esperado para o verificar contra a sua entrada, ou cole uma cadeia de hash desconhecida para identificar de que algoritmo provavelmente veio. SHA-1/256/384/512 vêm do WebCrypto nativo do seu navegador; os restantes são implementações autónomas em JavaScript puro, pelo que tudo é executado localmente. Veja também o Gerador de números aleatórios para sequências aleatórias com semente.
Executa-se inteiramente localmente — nada é enviado. Entradas até 200 MB.
Entrada: Algoritmos:
Formato de saída: O SHA-1 é legado — prefira SHA-256/512, a menos que precise dele.
As linhas de resumo usam a forma “ALGORITMO hash” para as poder copiar para notas de lançamento ou manifestos de transferência.
Cole o resumo que uma página de transferências ou um manifesto lhe deu. A ferramenta tolera maiúsculas/minúsculas, espaços, dois-pontos, prefixos do tipo sha256=, invólucros do tipo MD5 (ficheiro.exe) = e saída md5sum de várias linhas, e depois compara-o com os algoritmos que marcou acima.
Cole uma cadeia de hash desconhecida. A ferramenta lê o seu comprimento, o conjunto de caracteres e os prefixos, e lista os algoritmos que a podem ter produzido — desde um resumo hexadecimal simples até hashes de palavras-passe em estilo PHC, como $2b$… ou $argon2id$….
Escolher um algoritmo:
O SHA-256 é hoje a opção predefinida sensata para verificações de integridade. O SHA-512 é mais forte e corre mais depressa em hardware de 64 bits, ao preço de uma saída mais longa; o SHA-384 é a opção intermédia quando precisa de um resumo SHA-2 com comprimento truncado. O SHA-3 é uma norma NIST concebida de forma independente (não é uma atualização do SHA-2) e é a resposta padrão quando quer um algoritmo sem linhagem partilhada com o SHA-2; o Keccak-256 é a variante pré-norma usada pelo Ethereum e por alguns outros sistemas, e difere do SHA3-256 num byte de preenchimento. BLAKE2b/BLAKE2s são hashes modernos rápidos, concebidos para uso em software; o RIPEMD-160 é um desenho mais antigo ainda usado em contextos Bitcoin e OpenPGP. O SHA-1 e o MD5 estão quebrados criptograficamente para entradas hostis, mas continuam corretos e são muito usados para deduplicação, sistemas legados e somas de verificação não adversariais — nunca os use onde um atacante pudesse escolher o conteúdo. Nenhum hash é hoje “resistente a computação quântica” no sentido em que os computadores quânticos ameaçam primeiro as assinaturas e a troca de chaves — o algoritmo de Grover só reduz para metade o comprimento efetivo do hash, pelo que o SHA-256 já está confortavelmente acima do limite prático. Os hashes são determinísticos: os mesmos bytes produzem sempre o mesmo resumo, e é precisamente isso que os torna úteis para verificar que uma transferência ou um ficheiro de configuração está íntegro.
À procura do hash nacional chinês?
O SM3 (GB/T 32905-2016), o resumo exigido na criptografia comercial chinesa, não faz parte desta página — tem a sua própria ferramenta, com suporte a HMAC-SM3, na página Gerador de hash SM3, juntamente com o resto da família SM: SM4 (cifra de bloco), SM2 (assinaturas e cifragem) e SM9 (criptografia baseada em identidade).
Gerador de hash — cada algoritmo explicado do zero
Numa frase: uma função de hash criptográfico é um liquidificador de sentido único — recebe qualquer número de bytes e comprime-os numa impressão digital de comprimento fixo, de modo que a mesma entrada dá sempre a mesma impressão digital, mas essa impressão digital não diz nada sobre como reconstruir a entrada. Esta página executa onze delas inteiramente dentro do separador do navegador.

Cada algoritmo abaixo é explicado nos mesmos quatro passos: o que é, em palavras simples; a intuição de como funciona sem qualquer fórmula; se ainda deve usá-lo hoje; e os erros que as pessoas mais cometem com ele.

MD5

O que é. O MD5 (1992) comprime qualquer entrada numa impressão digital de 128 bits (32 caracteres hexadecimais). Foi concebido para ser rápido nos computadores dos anos 90, e é-o — e é precisamente por isso que ainda está em todo o lado: páginas de transferência de software, caches de deduplicação de ficheiros, chaves de bases de dados antigas.

Como funciona, intuitivamente. A entrada é cortada em blocos de 64 bytes. Cada bloco é mexido num estado rotativo de 128 bits quatro vezes seguidas (quatro rondas de mistura ligeiramente diferentes), e depois do último bloco o estado é impresso como resumo. A mistura é construída com somas, rotações e consultas de tabela — baratas então, baratas agora.

Deve usá-lo? Para somas de verificação onde ninguém está a tentar enganá-lo — detetar uma transferência corrompida, encontrar ficheiros duplicados — sim, continua a reportar corrupção perfeitamente. Para qualquer coisa adversarial, não: desde 2004 que os investigadores conseguem construir dois ficheiros diferentes com o mesmo MD5 em segundos, e em 2008 houve falsificações reais de certificados com colisões MD5. Trate-o como um número de série, e não como um cadeado.

Erros comuns. Usar o MD5 para palavras-passe (muito rápido — veja o Gerador de hash de palavras-passe para saber o que pertence ali); confiar num ficheiro porque “o MD5 coincide” quando o atacante também publicou o MD5; e colar a linha MD5 (ficheiro) = hash completa em vez de apenas o hash — a caixa Verificar acima aceita ambos.

SHA-1

O que é. O SHA-1 (1995, NSA) produz um resumo de 160 bits (40 caracteres hexadecimais). Durante vinte anos foi o hash de integridade predefinido do Git, dos certificados TLS e das assinaturas PGP.

Como funciona, intuitivamente. Mesma receita de família que o MD5, mas com um estado de 160 bits, 80 rondas de mistura por bloco de 64 bytes, e um conjunto mais largo de operações. As rondas extra destinavam-se a tornar o liquidificador mais difícil de fazer engenharia inversa.

Deve usá-lo? Não, para nada que seja adversarial. A quebra teórica tornou-se prática em 2017, quando a Google produziu dois PDFs diferentes com valores SHA-1 idênticos (o ataque SHAttered, de cerca de 6500 anos-CPU). O Git ainda guarda objetos sob SHA-1, mas trata-o apenas como identificador, e desde então acrescentou deteção de colisões. Para trabalho novo use SHA-256 ou SHA-3.

Erros comuns. Acreditar que 160 bits “ainda é suficientemente longo” — a quebra diz respeito à estrutura interna, e não à força bruta; e confundir o RIPEMD-160 com o SHA-1 porque ambos têm 40 caracteres hexadecimais (a caixa identificadora acima distingue-os).

SHA-2: SHA-256, SHA-384 e SHA-512

O que é. A família SHA-2 (2001, NSA) é o cavalo de trabalho da verificação moderna de integridade. O SHA-256 dá 256 bits (64 caracteres hexadecimais), o SHA-512 dá 512 bits, e o SHA-384 é o SHA-512 com o resultado cortado para 384 bits — útil quando um protocolo impõe uma etiqueta mais curta.

Como funciona, intuitivamente. Blocos de 64 bytes (ou 128 bytes nas variantes de 512 bits) são dobrados num estado de 8 palavras através de 64 (ou 80) rondas de passos de somar-rodar-misturar. Ao contrário do MD5, o escalonamento primeiro estica cada bloco num buffer expandido, e foi isso que derrotou o estilo de ataque que quebrou o MD5 e o SHA-1. Uma curiosidade que vale a pena conhecer: em CPUs de 64 bits o SHA-512 é mais rápido do que o SHA-256, porque processa o dobro dos dados por ronda com aritmética de 64 bits.

Deve usá-lo? Sim — o SHA-256 é hoje a resposta predefinida para somas de verificação de ficheiros, assinatura de código e impressões digitais de certificados, sem nenhuma quebra prática conhecida após duas décadas de análise. Use SHA-384/512 quando quiser mais margem ou quando a plataforma os executar mais depressa.

Erros comuns. Usar apenas o SHA-256 para palavras-passe — é um hash rápido, e a velocidade é o inimigo aí (use bcrypt/scrypt/Argon2id); e confundir o comprimento do resumo com força para definições de resistência a colisões adversariais — o comprimento só define o teto.

SHA-3 (SHA3-256 / SHA3-512) e Keccak-256

O que é. O SHA-3 (2015, padronizado a partir da submissão Keccak por Bertoni, Daemen, Peeters e Van Assche) é o terceiro padrão de hash do NIST. Não partilha nada com os internos do SHA-2 — foi escolhido precisamente para ser uma cópia de segurança independente, caso o SHA-2 alguma vez caia.

Como funciona, intuitivamente. Em vez de fazer passar blocos por um estado pequeno, o Keccak “absorve e espreme” repetidamente: a entrada é absorvida bit a bit numa esponja de 5×5×64 bits, a esponja inteira é baralhada por uma permutação fixa (24 rondas de operações bit a bit sobre todo o estado), e depois os bits do resumo são espremidos para fora. A imagem da esponja é a ideia toda: os bits de capacidade nunca são emitidos, e são eles que tornam a função de sentido único.

Keccak-256 vs SHA3-256. Diferem exatamente num byte de preenchimento. A submissão original da equipa Keccak preenchia o último bloco com 0x01; o NIST mudou o preenchimento padrão para 0x06 (separação de domínios usada pelo Keccak da era SHA-2). O Ethereum adotou o preenchimento original, pelo que o seu “keccak256” difere do SHA3-256 padrão para todas as entradas. Esta página oferece ambos, marcados separadamente.

Deve usá-lo? Sim — seja como escolha principal quando a política quer um algoritmo que não seja da família SHA-2, seja onde o ecossistema já o fala. Erros comuns: assumir que o SHA3-256 e o Keccak-256 são intercambiáveis (não são — compare as duas linhas que esta página produz para a mesma entrada); e assumir que o “SHA-3” substitui o SHA-2 — ambos são seguros, e o SHA-2 continua a ser o mais implementado.

RIPEMD-160

O que é. O RIPEMD-160 (1996, o consórcio RIPE de académicos europeus, reforçado por Dobbertin, Bosselaers e Preneel) produz 160 bits. É um desenho inteiramente europeu, deliberadamente independente da família SHA concebida pela NSA.

Como funciona, intuitivamente. Cada bloco de 64 bytes é processado por duas linhas paralelas de 80 rondas com constantes e quantidades de rotação diferentes; no fim, as duas linhas e o estado antigo são combinados. A estrutura de duas vias foi a forma que os autores encontraram para resistir aos ataques diferenciais que estavam a quebrar outros hashes dos anos 90.

Deve usá-lo? Na prática sobrevive sobretudo dentro de outros sistemas: os endereços Bitcoin fazem hash das suas chaves públicas com RIPEMD-160(SHA-256(pk)), chaves OpenPGP mais antigas oferecem-no como opção de hash, e é o hash tradicional das peças do BitTorrent v1 juntamente com o SHA-1. Não tem um ataque de colisão prático, mas o tamanho de 160 bits dá-lhe a menor margem de segurança nesta página. Para uso autónomo novo, prefira SHA-256 ou SHA-3.

Erros comuns. Acreditar que as duas linhas paralelas o tornam “duas vezes mais forte” — o tamanho da saída é o que limita a resistência a colisões; e confundi-lo com o SHA-1 (o mesmo comprimento de 40 caracteres hexadecimais; a caixa identificadora acima lista as duas possibilidades lado a lado).

BLAKE2b-512 e BLAKE2s-256

O que é. O BLAKE2 (2013, Aumasson, Neves, Wilcox-O’Hearn e Winnerlein) é um hash concebido para a velocidade do software: o BLAKE2b visa plataformas de 64 bits com saída até 512 bits, o BLAKE2s visa plataformas de 32 bits com saída até 256 bits.

Como funciona, intuitivamente. Descende do finalista do concurso SHA-3, o BLAKE, cujo núcleo é uma permutação com chave emprestada da cifra de fluxo ChaCha: uma matriz 4×4 de palavras é baralhada por passos alternados de mistura de colunas e de diagonais — como embaralhar uma grelha primeiro de cima para baixo, depois ao longo das diagonais — em 12 (BLAKE2b) ou 10 (BLAKE2s) rondas por bloco. Como esses passos se mapeiam muito bem em instruções do CPU, o BLAKE2 é frequentemente mais rápido do que o MD5, oferecendo uma segurança comparável à do SHA-3.

Deve usá-lo? Sim — é um desenho totalmente moderno e não quebrado, popular em software sensível ao desempenho (integridade de pacotes em alguns ecossistemas, armazenamento endereçado por conteúdo, deduplicação de cópias de segurança) e como MAC rápido. Nesta página, o BLAKE2b-512 dá os resumos mais longos e o BLAKE2s-256 a opção moderna compacta.

Erros comuns. Pensar que “mais rápido tem de ser mais fraco” — o BLAKE2 é mais rápido por desenho, e não por cortar caminho; e não perceber que o BLAKE2 também aceita uma chave (tornando-se um MAC) ou uma cadeia de personalização — esta página usa-o sempre no modo simples, sem chave.

Como ler as caixas Verificar e Identificar

Verificar. A caixa de verificação normaliza o que colar — maiúsculas ou minúsculas, dois-pontos a cada dois dígitos, um prefixo sha256=, o invólucro SHA256 (ficheiro) = hash ao estilo BSD, uma linha md5sum do GNU com o nome do ficheiro depois do hash, \r\n perdidos — e depois recalcula todos os algoritmos marcados sobre a sua entrada atual (texto ou o ficheiro escolhido) e comunica cada algoritmo que coincide. Uma coincidência a verde significa “estes bytes são exatamente o que o editor calculou o hash”; a vermelho significa que nenhum dos algoritmos marcados o produziu — experimente marcar mais algoritmos, ou verifique se a colagem foi truncada.

Identificar. A caixa de identificação não calcula hash de nada; lê a forma da cadeia. O comprimento restringe os candidatos: 32 caracteres hexadecimais podem ser MD5, 40 podem ser SHA-1 ou RIPEMD-160, 64 podem ser SHA-256 / SHA3-256 / Keccak-256 / BLAKE2s-256, 96 SHA-384, 128 SHA-512 / SHA3-512 / BLAKE2b-512. Os prefixos revelam hashes de palavras-passe ($2a$/$2b$/$2y$ bcrypt, $argon2id$, $scrypt$, $6$ sha512crypt, $1$ MD5-crypt) — são outra espécie (veja o Gerador de hash de palavras-passe) e não são calculados deliberadamente por esta página. Uma cadeia com +, / e = cujo comprimento é múltiplo de 4 é mais provavelmente dados codificados em Base64 do que um resumo hexadecimal; a ferramenta descodifica-a e indica o comprimento em bytes que lhe corresponderia.

O que a identificação pode e não pode dizer. O comprimento e o conjunto de caracteres são impressões digitais do formato, não prova do algoritmo: duas cadeias de 64 caracteres hexadecimais podem vir de SHA-256 ou de SHA-512 truncado. O identificador ordena as possibilidades; a caixa Verificar é a que prova qual o algoritmo a que os seus bytes realmente correspondem.

Os onze num relance
Algoritmo Resumo Criado Resumo de “The quick brown fox jumps over the lazy dog”
MD5128 bits19929e107d9d372bb6826bd81d3542a419d6
SHA-1160 bits19952fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256256 bits2001d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-384384 bits2001ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1
SHA-512512 bits200107e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6
SHA3-256256 bits201569070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04
SHA3-512512 bits201501dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450
Keccak-256256 bitsanterior a 20154d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15
RIPEMD-160160 bits199637f332f68db77bd9d7edd4969571ad671cf9dd3b
BLAKE2b-512512 bits2013a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918
BLAKE2s-256256 bits2013606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812

Cada resumo da tabela acima é produzido pelos motores desta própria página — marque todos os algoritmos, clique em Exemplo e compare. As linhas SHA-3, Keccak, RIPEMD-160 e BLAKE2 vêm do núcleo crypto-shared.js alojado no próprio site, usado em todas as ferramentas criptográficas deste site.

Perguntas frequentes

Em qual caixa devo confiar para uma transferência? Na caixa Verificar, com o SHA-256 marcado — a maioria dos editores assina hoje com SHA-256 ou SHA-512. A caixa Identificar apenas nomeia candidatos; nunca prova nada sobre o seu ficheiro.

Porque é que o Keccak-256 está na lista? Porque o Ethereum, o Swarm e alguns sistemas de registo adotaram o preenchimento pré-norma. Se verificar um keccak256 do Ethereum tem de usar essa linha, e não o SHA3-256.

Podem duas entradas diferentes partilhar um resumo? Em teoria, sim — infinitas entradas são mapeadas num conjunto finito de resumos (princípio da gaveta). Na prática, encontrar um tal par antes do fim do universo é aquilo de que trata a “resistência a colisões”, e todos os algoritmos acima, exceto MD5 e SHA-1, continuam de pé.

Os hashes são cifragem? Não. A cifragem é reversível com uma chave; um hash é um liquidificador de sentido único. Nada nesta página pode ser “decifrado” de volta ao seu texto — e isso é uma funcionalidade, não uma limitação.