Pular para o conteúdo
Obtani
Segurança Digital

SHA-256 na Prática: O Que o Hash Resolve e o Que Não Resolve

6 min de leitura

Quer o número agora? Calcule o hash SHA-256, SHA-1, SHA-384 e SHA-512 de qualquer texto, em hexadecimal ou Base64.

Gerador de Hash SHA-256

Hash é uma das ideias mais úteis da computação e uma das mais mal compreendidas. A confusão começa pelo vocabulário: muita gente diz "criptografar em SHA-256", e essa frase não faz sentido. Vale desfazer o nó, porque dele saem quase todos os erros práticos do assunto.

O que um hash faz

Uma função de hash criptográfico lê uma sequência de bytes de qualquer tamanho e devolve sempre a mesma quantidade de bits. O SHA-256 devolve 256 bits, que aparecem como 64 dígitos hexadecimais. Uma letra sozinha e um romance inteiro produzem resumos do mesmo tamanho.

Duas propriedades explicam tudo o que se faz com isso.

A primeira é o efeito avalanche. Mudar um único bit da entrada muda, em média, metade dos bits da saída — e o resultado não guarda nenhuma semelhança visível com o anterior:

TextoSHA-256
obtani3d51... (começo)
obtanjcompletamente diferente, sem um padrão reconhecível

É por isso que hash serve para detectar alteração. Se um byte de um arquivo mudou, o resumo muda de forma escandalosa. Não existe "quase igual".

A segunda é a irreversibilidade. Como toda entrada possível precisa caber nos mesmos 256 bits, existem infinitos textos diferentes que produzem o mesmo resumo. Não há caminho de volta porque a volta não é única — a função joga informação fora de propósito.

Por isso "descriptografar SHA-256" não existe

Criptografia é reversível por construção: você cifra com uma chave e decifra com a mesma chave (ou com a chave par). O objetivo é guardar algo para ler depois.

Hash é o oposto: o objetivo é nunca ler de volta. Serve para comparar, não para armazenar.

Os sites que prometem "quebrar hash" fazem outra coisa: mantêm uma tabela gigante de textos comuns já calculados e procuram o seu resumo nela. Eles acertam 123456, senha123 e qualquer palavra de dicionário — e nunca vão acertar uma frase que você escreveu. Não é reversão; é busca numa lista.

O que o hash resolve de verdade

  • Integridade de arquivo. Você baixa uma imagem de sistema de 5 GB e o site publica o SHA-256 esperado. Se bater, o arquivo chegou inteiro. Se não bater, algo se corrompeu no caminho — ou alguém trocou o arquivo.
  • Comparação barata. Comparar dois hashes de 64 caracteres é instantâneo; comparar dois arquivos de gigabytes, não. Sistemas de backup e de deduplicação vivem disso.
  • Identificação de conteúdo. O Git identifica cada commit pelo hash do seu conteúdo. Se o conteúdo mudar, o identificador muda — é essa propriedade que torna o histórico auditável.
  • Verificação sem revelar. Você pode provar que sabe um valor publicando o hash dele antes, e o valor depois. É a base de esquemas de compromisso.

A causa número um de "meu hash não bate"

Esta merece uma seção própria, porque é de longe o problema mais frequente — e quase nunca é erro de cálculo.

O hash trabalha sobre bytes, não sobre letras. A conversão de letras em bytes depende da codificação, e codificações diferentes produzem bytes diferentes para o mesmo texto:

Codificação de “ação”BytesResultado
UTF-8 (padrão da web)6um resumo
latin-1 (ISO-8859-1)4outro resumo, sem relação com o primeiro

A palavra tem quatro caracteres nos dois casos. O que muda é que, em UTF-8, o ç e o ã gastam dois bytes cada. Seis bytes contra quatro: entradas diferentes, saídas diferentes.

Se você compara o resultado de duas ferramentas e elas discordam, verifique nesta ordem:

  1. A codificação. Se o texto tem acento, cedilha ou emoji, é quase certo que a causa é esta. O gerador de hash mostra lado a lado quantos caracteres e quantos bytes o seu texto tem, justamente para essa diferença ficar visível.
  2. Uma quebra de linha invisível. Colar de um editor costuma trazer um \n no fim. Ele é um byte, e muda tudo.
  3. A representação. Hexadecimal e Base64 são o mesmo resumo escrito de dois jeitos. E cuidado com uma armadilha clássica: o Base64 correto é o dos bytes do resumo, não do texto hexadecimal passado por um conversor Base64. São valores diferentes.

SHA-1: quando ainda dá para usar

O SHA-1 está quebrado, e isso não é opinião. Em 23 de fevereiro de 2017, pesquisadores do CWI Amsterdam e do Google publicaram o ataque SHAttered: dois arquivos PDF diferentes, com conteúdos visivelmente distintos, e o mesmo SHA-1. O custo foi alto para a época — cerca de nove quintilhões de operações — mas milhares de vezes menor que a força bruta, e só barateou desde então.

O NIST anunciou em dezembro de 2022 a retirada do algoritmo, com prazo de 31 de dezembro de 2030 para os módulos criptográficos validados.

Mesmo assim, ele continua por aí. O Git identifica commits por SHA-1; repositórios antigos publicam checksums em SHA-1; sistemas legados esperam esse formato. Todos esses são casos em que não há adversário: ninguém está tentando construir dois arquivos com o mesmo resumo para te enganar. Para detectar corrupção acidental, o SHA-1 funciona.

A regra prática é simples: se existe alguém com interesse em te enganar, SHA-1 está fora. Se é só para conferir que um byte não virou outro no caminho, ele ainda serve — mas não há motivo para escolhê-lo em nada novo.

E o MD5?

Pior ainda. Colisões práticas desde 2004, colisões de prefixo escolhido desde 2007 — e essa segunda categoria foi usada de verdade: em 2012, o malware Flame forjou uma assinatura que parecia vir da Microsoft explorando exatamente isso. O MD5 nem existe na API criptográfica dos navegadores, o que é uma declaração de posição dos fabricantes.

Se você precisa conferir um MD5 antigo, use a ferramenta de linha de comando do seu sistema. Se está escolhendo um algoritmo hoje, use SHA-256 e não pense mais no assunto.

O que o hash não resolve

  • Não guarda senha. É o assunto do próximo texto desta série, e o erro mais caro de todos: hash rápido é exatamente o que o atacante quer.
  • Não protege segredo. Se o texto é curto e previsível, a tabela pronta encontra.
  • Não autentica sozinho. Um hash publicado no mesmo servidor do arquivo não prova nada: quem trocou o arquivo troca o hash junto. Para autenticar é preciso assinatura ou um canal separado.
  • Não é anonimização. Passar um CPF por SHA-256 não anonimiza nada: são 11 dígitos, e testar todos leva segundos.

Hash é uma ferramenta de comparação. Dentro desse escopo, é excelente — e é praticamente inquebrável quando o algoritmo é o certo. Fora dele, é a escolha errada com aparência de segurança, que é a pior combinação possível.

Leia também