O que é uma função hash

Uma função hash é um algoritmo matemático que transforma qualquer entrada (texto, arquivo, imagem) em uma saída de tamanho fixo, chamada digest ou "impressão digital". A mesma entrada sempre produz o mesmo hash, mas mudando 1 bit da entrada, a saída muda completamente (efeito avalanche). Não é possível reverter (em tempo viável) do hash de volta para o texto original.

Os algoritmos mais usados

AlgoritmoTamanhoUso recomendado
MD5128 bits / 32 hexChecksum simples. NÃO usar para segurança
SHA-1160 bits / 40 hexLegado Git. Vulnerável desde 2017
SHA-256256 bits / 64 hexPadrão atual (Bitcoin, SSL, assinatura)
SHA-384384 bits / 96 hexIntermediário, alta performance
SHA-512512 bits / 128 hexAplicações de altíssima segurança

Para que servem hashes

Integridade de arquivos: baixou uma ISO? Compare o SHA-256 do arquivo com o publicado pelo fornecedor — se bater, arquivo íntegro.
Senhas em banco: nunca se armazena senha em texto; armazena-se o hash. Mas para senhas use bcrypt, argon2 ou scrypt (com salt e custo ajustável), nunca MD5/SHA puro.
Assinatura digital: contratos, blockchain, certificados SSL usam SHA-256 para garantir que nenhum byte foi alterado.
Detecção de duplicatas: arquivos com mesmo hash são idênticos (em algoritmos sem colisão).
Git: cada commit é identificado por um SHA-1 do seu conteúdo.

Por que MD5 e SHA-1 foram "quebrados"

MD5 sofreu ataque de colisão prático em 2004 (Wang et al.) e, desde 2008, é trivial criar dois arquivos diferentes com o mesmo MD5. SHA-1 seguiu o mesmo caminho em 2017 (ataque SHAttered do Google). Não use esses algoritmos para validar integridade em contexto adversarial. Para checksum casual (detectar corrupção acidental de arquivo) ainda servem.

O que é salt e por que importa

Salt é uma string aleatória adicionada antes de calcular o hash de uma senha. Sem salt, duas pessoas com a mesma senha têm o mesmo hash — e um atacante com uma tabela pré-computada (rainbow table) descobre todos de uma vez. Com salt único por usuário, cada hash vira distinto e a rainbow table se torna inútil.

Hash em diferentes linguagens

Node.js: crypto.createHash('sha256').update(texto).digest('hex').
Python: import hashlib; hashlib.sha256(b"texto").hexdigest().
PHP: hash('sha256', $texto).
JavaScript (navegador): crypto.subtle.digest('SHA-256', ...) — é o que esta ferramenta usa.
Bash/Linux: echo -n "texto" | sha256sum.

Tamanho do digest vs segurança

O digest ser maior não implica automaticamente mais segurança. O que importa é o algoritmo não ter colisão conhecida. SHA-256 (256 bits) é suficiente para praticamente tudo em 2026. SHA-512 é mais rápido em CPUs 64 bits e é recomendado para quem precisa de margem de segurança extra em documentos de longo prazo.

Perguntas Frequentes

  • Não, hash não é criptografia — é uma função de mão única. A única forma de "descobrir" o texto é por força bruta (testar todas as entradas possíveis). Senhas curtas/comuns podem ser quebradas em horas; senhas longas com caracteres variados são inviáveis mesmo com supercomputadores.

  • Absolutamente não. MD5 é rápido (bilhões de hashes por segundo em GPU), sem salt e quebrado. Use sempre bcrypt, argon2 ou scrypt para senhas.

  • Não. Tudo é calculado localmente no seu navegador via Web Crypto API (SHA) e MD5 puro em JS. Nenhum dado é enviado para servidores. Seu texto nunca sai do seu computador.

  • Sim — qualquer diferença na entrada (mesmo um espaço, maiúscula ou nova linha) muda totalmente o hash. Essa é a base da detecção de corrupção: comparando hashes, você sabe se o arquivo chegou íntegro.

Buscas relacionadas

gerador de hash online, md5 gerador, sha256 online, hash de texto, checksum arquivo, diferença md5 sha256.