As linhas de resumo usam a forma “ALGORITMO hash” para as poder copiar para notas de lançamento ou manifestos de transferência.
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” |
| MD5 | 128 bits | 1992 | 9e107d9d372bb6826bd81d3542a419d6 |
| SHA-1 | 160 bits | 1995 | 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12 |
| SHA-256 | 256 bits | 2001 | d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592 |
| SHA-384 | 384 bits | 2001 | ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1 |
| SHA-512 | 512 bits | 2001 | 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb642e93a252a954f23912547d1e8a3b5ed6e1bfd7097821233fa0538f3db854fee6 |
| SHA3-256 | 256 bits | 2015 | 69070dda01975c8c120c3aada1b282394e7f032fa9cf32f4cb2259a0897dfc04 |
| SHA3-512 | 512 bits | 2015 | 01dedd5de4ef14642445ba5f5b97c15e47b9ad931326e4b0727cd94cefc44fff23f07bf543139939b49128caf436dc1bdee54fcb24023a08d9403f9b4bf0d450 |
| Keccak-256 | 256 bits | anterior a 2015 | 4d741b6f1eb29cb2a9b9911c82f56fa8d73b04959d3d9d222895df6c0b28aa15 |
| RIPEMD-160 | 160 bits | 1996 | 37f332f68db77bd9d7edd4969571ad671cf9dd3b |
| BLAKE2b-512 | 512 bits | 2013 | a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918 |
| BLAKE2s-256 | 256 bits | 2013 | 606beeec743ccbeff6cbcdf5d5302aa855c256c29b88c8ed331ea1a6bf3c8812 |
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.