Lição 4
Erros comuns com hash
Evite uso incorreto típico de hash em aplicações e depuração.
Bugs relacionados a hash costumam vir de comparar a ideia certa com os bytes ou o algoritmo errado.
Armazenar senhas com MD5 ou SHA-256 puro
Hashes rápidos sem salt e sem key stretching são vulneráveis a rainbow tables e adivinhação offline. Armazenamento de senha exige funções dedicadas (Argon2, bcrypt, scrypt) e salt único por usuário.
Hashear a representação errada
Estas não são a mesma operação:
- Texto UTF-8
Hello - Os bytes ASCII após remover espaços nas bordas
- Uma string JSON com ordem de chaves diferente
- Um arquivo que inclui newline no final
Sempre hasheie a sequência exata de bytes que o sistema usa.
Tratar hash como segredo
Se o atacante sabe que o espaço de entrada é pequeno — senhas comuns, IDs sequenciais, chaves curtas de config — pode quebrar o hash offline. Hashes protegem comparações de integridade, não confidencialidade de entradas previsíveis.
Comparar algoritmos incorretamente
Um digest MD5 nunca vai bater com SHA-256 do mesmo input porque os algoritmos diferem. Da mesma forma, hex maiúsculo e minúsculo costumam ser equivalentes, mas representações Base64 e hex não são intercambiáveis sem conversão.
Usar hashes fracos para decisões de segurança
Checksum MD5 serve para detectar corrupção acidental de arquivo. É má escolha para assinatura de código, validação de certificado ou evidência de adulteração contra atacante ativo.