gabrel.com.br
~/blog/post

Hash vs. Encriptação: entendendo de vez as diferenças

Se você trabalha com tecnologia, cedo ou tarde vai esbarrar nesses dois termos: hash e encriptação (ou criptografia). Muita gente usa as palavras como sinônimos, mas são conceitos completamente diferentes, com objetivos diferentes e usados em situações diferentes. Entender essa diferença é fundamental — inclusive para não cometer erros graves de segurança, como armazenar senhas de forma criptografada em vez de usar hash (um erro mais comum do que se imagina).

Neste post, vamos destrinchar os dois conceitos, entender como funcionam por baixo dos panos e ver exemplos práticos de quando usar cada um.

A diferença fundamental: reversibilidade

Antes de entrar em detalhes técnicos, fica a regra de ouro:

Encriptação é uma via de mão dupla. Hash é uma via de mão única.

Com essa ideia em mente, vamos aprofundar em cada um.


Encriptação (Criptografia)

Encriptação é o processo de transformar uma informação legível (texto claro, ou plaintext) em uma informação ilegível (texto cifrado, ou ciphertext), usando um algoritmo matemático e uma chave. Quem possui a chave correta consegue reverter o processo (decriptação) e recuperar o dado original.

Tipos de encriptação

1. Criptografia simétrica

Usa a mesma chave para encriptar e decriptar. É rápida e eficiente, ideal para grandes volumes de dados.

2. Criptografia assimétrica

Usa um par de chaves: uma pública (que pode ser compartilhada livremente) e uma privada (que deve ser mantida em segredo). O que é encriptado com a chave pública só pode ser decriptado com a chave privada correspondente, e vice-versa.

Na prática, muitos sistemas combinam as duas abordagens (criptografia híbrida): usam a assimétrica para trocar de forma segura uma chave simétrica, e depois usam a simétrica para encriptar o volume real de dados. É basicamente assim que o HTTPS funciona.

Para que serve a encriptação


Hash

Uma função hash pega um dado de qualquer tamanho e produz uma saída de tamanho fixo, chamada de "hash", "digest" ou "resumo criptográfico". Diferente da encriptação, não existe chave envolvida (nas funções hash tradicionais) e o processo é unidirecional: é computacionalmente inviável reverter um hash e obter o dado original.

Propriedades importantes de um bom algoritmo de hash

  1. Determinismo: a mesma entrada sempre produz a mesma saída.
  2. Efeito avalanche: uma pequena mudança na entrada (até um único bit) gera uma saída completamente diferente.
  3. Rapidez de cálculo: deve ser rápido de computar o hash a partir de uma entrada.
  4. Resistência à pré-imagem: dado um hash, deve ser inviável descobrir a entrada original.
  5. Resistência a colisões: deve ser extremamente difícil encontrar duas entradas diferentes que gerem o mesmo hash.

Algoritmos de hash comuns

Para que serve o hash


O erro clássico: confundir os dois

Um erro de segurança relativamente comum é encriptar senhas em vez de gerar hash delas. Por que isso é um problema?

Por isso a regra prática é: senha se compara com hash, dado sensível que precisa ser recuperado depois se encripta.


Resumo comparativo

Característica Encriptação Hash
Reversível? Sim, com a chave correta Não
Usa chave? Sim Não (funções hash tradicionais)
Tamanho da saída Proporcional à entrada Fixo, independente da entrada
Objetivo principal Confidencialidade Integridade / identificação
Exemplo de algoritmo AES, RSA SHA-256, bcrypt
Uso típico Proteger mensagens, arquivos, tráfego Verificar integridade, armazenar senhas

Conclusão

Encriptação e hash resolvem problemas diferentes, mesmo que ambos estejam sob o guarda-chuva da criptografia. Encriptação protege a confidencialidade de um dado que precisa ser recuperado depois. Hash gera uma impressão digital de um dado, útil para verificar integridade ou autenticidade, mas que nunca deve ser revertida — e nem pode, se o algoritmo for bem projetado.

Entender essa distinção não é só curiosidade técnica: é a base para tomar decisões corretas de segurança, seja escolhendo como armazenar senhas, como proteger dados sensíveis, ou como validar a integridade de um arquivo baixado da internet.

← voltar ao blog