Hash vs criptografia vs codificação
Entenda quando os dados devem ser hasheados, criptografados ou codificados — e por que esses mecanismos não são intercambiáveis.
Hash, criptografia e codificação transformam dados, mas resolvem problemas diferentes. Misturá-los leva a armazenamento fraco de senhas, integrações quebradas e sessões de depuração confusas.
A versão curta: hash para impressão digital, criptografar para sigilo, codificar para transporte.
Hash gera uma impressão digital
Uma função de hash transforma a entrada em um digest de tamanho fixo. Pequenas mudanças na entrada produzem saídas bem diferentes, e um bom hash criptográfico é projetado para ser unidirecional.
Use hash para:
- Verificação de integridade de arquivos.
- Chaves de cache e impressões digitais de conteúdo.
- Comparar dados sem armazenar o original.
- Armazenamento de senhas apenas quando combinado com algoritmo de hash de senha e salt — não MD5 ou SHA-256 puro.
Um Gerador de hash ajuda a comparar digests esperados e reais durante a depuração.
Criptografia protege o sigilo
Criptografia é reversível se você tiver a chave. É a ferramenta certa quando os dados originais precisam ser recuperados depois — mas só por partes confiáveis.
Use criptografia para:
- Segredos armazenados.
- Mensagens privadas.
- Campos sensíveis no banco de dados.
- Dados enviados por canais seguros.
Se qualquer pessoa pode decodificar o valor sem chave secreta, não é criptografia.
Codificação muda a representação
Codificação adapta os dados a uma sintaxe ou canal de transporte específico. Em geral é reversível sem segredo.
Use codificação para:
- Representação em texto Base64 de bytes.
- Codificação percentual de URL em parâmetros de query.
- Escape de entidades HTML em texto dentro de markup.
- Escape de strings em JSON.
Codificação não é barreira de segurança. Base64 pode esconder o significado numa olhada rápida, mas não protege o valor.
Escolhendo o mecanismo certo
Pergunte qual problema você precisa resolver:
- Precisa verificar se dois arquivos são idênticos? Hash.
- Precisa armazenar um segredo e recuperá-lo depois? Criptografar.
- Precisa colocar texto com segurança dentro de uma URL? Codificar.
- Precisa armazenar senha? Use esquema de hash de senha, não criptografia genérica nem SHA puro.
Depurando a confusão rapidamente
Quando um valor parece ilegível, inspecione o contexto. Caracteres seguros para URL podem indicar codificação de URL ou Base64URL. Uma string hex de tamanho fixo pode ser hash. Um valor com metadados, IVs ou IDs de chave pode estar criptografado.
Boa depuração começa nomeando a transformação corretamente. Depois disso, a ferramenta certa costuma ser óbvia.