O que é um hash? MD5, SHA-256 e para que servem

Um hash é uma impressão digital curta de qualquer dado. Veja como funciona, quais algoritmos usar e como verificar arquivos e proteger senhas.

Segurança 7 min de leitura

Você provavelmente já viu, ao lado de um botão de download, uma sequência longa de letras e números chamada "SHA-256" ou "MD5". Essa sequência é um hash, uma das ideias mais úteis da computação: uma pequena impressão digital que mostra se um dado foi alterado.

Neste guia você vai aprender o que é um hash, quais propriedades o tornam útil, como MD5, SHA-1 e SHA-256 se comparam, para que ele serve e como verificar um arquivo baixado passo a passo.

Gere um hash agora MD5, SHA-1, SHA-256, SHA-512 e mais, calculados no seu navegador. Seus textos e arquivos nunca são enviados. Abrir o gerador de hash

O que é um hash?

Hash é o resultado de uma função hash: um processo matemático que recebe qualquer entrada (uma palavra, um documento, um filme, um disco inteiro) e a transforma em uma sequência de caracteres de tamanho fixo. Em geral ele é escrito em hexadecimal, por exemplo 64 caracteres no SHA-256.

Pense em uma impressão digital: ela é pequena, identifica a pessoa e não permite reconstruí-la. Da mesma forma, um hash identifica um dado sem conter o dado.

As propriedades de uma boa função hash

Uma função hash criptográfica de qualidade tem estas propriedades:

  • Determinística: a mesma entrada sempre gera exatamente o mesmo hash.
  • Tamanho fixo: um texto de uma letra e um arquivo de 10 GB geram hashes do mesmo comprimento.
  • Mão única: dá para calcular o hash a partir do dado, mas não é viável recuperar o dado a partir do hash.
  • Efeito avalanche: mudar um único caractere ou bit altera o resultado por completo, então entradas parecidas não geram hashes parecidos.
  • Resistência a colisões: deve ser praticamente impossível achar duas entradas diferentes com o mesmo hash.

Colisão é quando duas entradas diferentes geram o mesmo hash. Em teoria elas sempre existem, pois há mais entradas possíveis do que hashes. Um algoritmo seguro torna encontrar uma colisão inviável.

Algoritmos comuns: MD5, SHA-1, SHA-256 e SHA-512

O MD5 (128 bits, 32 caracteres hex) é rápido e ainda está em todo lugar, mas ataques práticos de colisão são conhecidos há muitos anos. Ele está quebrado para segurança. Use apenas em tarefas sem risco, como detectar corrupção acidental ou identificar arquivos rapidamente.

O SHA-1 (160 bits, 40 caracteres hex) também foi quebrado: pesquisadores produziram uma colisão real em 2017 e ele foi abandonado em certificados e assinaturas. Evite em qualquer uso de segurança.

SHA-256 e SHA-512 fazem parte da família SHA-2 (256 e 512 bits, 64 e 128 caracteres hex). São o padrão atual e não se conhece ataque prático. O SHA-256 é a escolha usual para checksums, assinaturas e blockchains. O SHA-3 é um projeto mais novo e diferente, também considerado seguro.

Para que serve um hash

  • Verificar downloads: quem publica o arquivo informa o hash para você confirmar que recebeu exatamente o que foi publicado, sem corrupção nem adulteração.
  • Armazenar senhas: um site deve guardar o hash da sua senha, e não a senha em si (veja a próxima seção para fazer do jeito certo).
  • Deduplicação: sistemas de armazenamento e backup comparam hashes para achar arquivos idênticos sem comparar byte a byte.
  • Assinaturas digitais e certificados: em vez de assinar o documento inteiro, o software assina o hash dele, o que é mais rápido e igualmente válido.
  • Controle de versão e blockchains: ferramentas como o Git identificam o conteúdo por hash, e cada bloco de uma blockchain referencia o hash do anterior.

Hash x criptografia x codificação

Os três são muito confundidos, mas resolvem problemas diferentes:

  • Hash é de mão única e não usa chave. Serve para verificar, não para esconder. Não existe "descriptografar" um hash.
  • Criptografia é de mão dupla: com a chave certa você transforma dados legíveis em ilegíveis e volta. O objetivo é a confidencialidade.
  • Codificação, como o Base64, é só uma mudança de formato que qualquer pessoa reverte. Não oferece segurança alguma.

Se você precisa ler o dado de novo depois, o que você quer é criptografia ou codificação, não um hash.

Senhas: use hashes lentos e com salt, não SHA-256 puro

Usar hash é a forma certa de guardar senhas, mas o algoritmo importa. SHA-256 e MD5 foram feitos para ser rápidos, o que ajuda o atacante: com um banco de dados vazado ele testa bilhões de palpites por segundo, e senhas iguais geram hashes iguais.

O armazenamento de senhas deve usar um algoritmo feito para isso, como Argon2, bcrypt ou scrypt. Eles adicionam um salt aleatório único a cada senha (assim senhas iguais têm hashes diferentes) e são propositalmente lentos e custosos, o que inviabiliza o ataque em massa.

Para você, usuário, é mais um motivo para escolher senhas longas e únicas, já que nem um bom hash salva uma senha fraca. Nosso gerador de senhas cria isso para você.

Como verificar um arquivo baixado em 4 passos

  1. Na página oficial de download, encontre o checksum publicado (geralmente SHA-256) e copie. Confirme que a página é do próprio desenvolvedor, de preferência com HTTPS.
  2. Abra o gerador de hash, escolha o mesmo algoritmo (por exemplo SHA-256) e selecione o arquivo baixado. Ele é processado localmente, no seu navegador.
  3. Compare o hash gerado com o publicado. Maiúsculas e minúsculas não importam, mas todos os caracteres devem ser iguais.
  4. Se forem iguais, o arquivo está íntegro. Se forem diferentes, apague e baixe de novo da fonte oficial: ele pode estar corrompido ou adulterado.

Erros comuns a evitar

  • Usar MD5 ou SHA-1 para proteger algo importante. Prefira SHA-256 ou superior.
  • Guardar senhas como SHA-256 ou MD5 puro, sem salt. Use Argon2 ou bcrypt.
  • Chamar hash de "criptografia". Ele não pode ser descriptografado, e "reverter" um hash normalmente é só adivinhar o original em uma lista.
  • Confiar em um hash que vem do mesmo lugar de um arquivo possivelmente adulterado. Pegue-o no site oficial, de preferência por outro canal.
  • Comparar só os primeiros caracteres. Compare a sequência inteira.
  • Gerar o hash de um texto com espaço ou quebra de linha invisível no fim: o resultado será totalmente diferente.

Conclusão

Um hash é uma impressão digital de tamanho fixo: o mesmo dado sempre dá o mesmo resultado, e qualquer alteração dá um resultado diferente. Use SHA-256 ou superior para verificar arquivos, deixe MD5 e SHA-1 apenas para usos sem segurança e guarde senhas com algoritmos lentos e com salt, como Argon2 ou bcrypt. Sempre que baixar algo importante, uma checagem de hash leva menos de um minuto.

Perguntas frequentes

Dá para reverter ou descriptografar um hash?

Não. A função hash é de mão única. Sites que "quebram" hashes só consultam tabelas enormes de palavras e senhas conhecidas, por isso senhas fracas ou comuns são achadas rápido e as longas e aleatórias não.

O MD5 ainda é seguro?

Não para segurança. É possível criar colisões de propósito, então um atacante poderia fabricar um arquivo malicioso com o mesmo MD5 de um arquivo seguro. Serve para detectar corrupção acidental ou como identificador rápido.

Qual a diferença entre SHA-256 e SHA-512?

Ambos são membros seguros da família SHA-2. O SHA-512 gera um hash maior (128 caracteres hex em vez de 64) e pode ser mais rápido em alguns processadores de 64 bits. Para checksums, o SHA-256 é a escolha comum.

Por que uma mudança mínima gera um hash totalmente diferente?

É o efeito avalanche, e é proposital. A função mistura tanto a entrada que mudar um bit altera cerca de metade dos bits da saída, o que torna qualquer modificação fácil de detectar.

É seguro gerar o hash de um arquivo em uma ferramenta online?

É seguro quando a ferramenta funciona no navegador e não envia nada. Nosso gerador de hash calcula tudo localmente no seu dispositivo, então seus textos e arquivos não saem dele.

Ferramentas grátis citadas neste artigo

Continue lendo

Todos os artigos