Hash, Salt e Cifras | Solyd One
- Hash, Salt e Cifras | Solyd One
🔹 O que é um Hash?
Um hash é uma função matemática que transforma uma entrada (texto, arquivo, senha etc.) em uma sequência fixa de caracteres (normalmente em hexadecimal). Características principais:
- Determinístico → mesma entrada gera sempre a mesma saída.
- Unidirecional → não dá para "voltar" do hash para o original.
- Sensível a alterações → mudar 1 caractere muda completamente o hash.
👉 Exemplo com SHA-256:
Entrada: "senha123"
Saída: ef92b778bafe771e89245b89ecbc08a44a4e166c06659911881f383d4473e94f
🔹 O que é Salt?
Salt é um valor aleatório adicionado à senha antes de aplicar o hash. Objetivo:
- Evitar que senhas iguais gerem o mesmo hash.
- Proteger contra ataques de rainbow tables (listas pré-calculadas de hashes).
👉 Exemplo:
Senha: "senha123"
Salt: "ABCD1234"
Hash final = hash("senha123ABCD1234")
Mesmo que outra pessoa use "senha123", o hash dela será diferente porque o salt muda.
🔹 Diferença: Hash vs Cifra
- Hash → unidirecional (não dá para reverter). Usado para verificar integridade e armazenar senhas.
- Cifra (encryption) → bidirecional (você pode encriptar e depois decriptar). Usada para proteger dados durante tráfego ou armazenamento.
🔹 Tipos de Hash mais comuns
- MD5 → rápido, mas inseguro (colisões).
- SHA-1 → mais seguro que MD5, mas já quebrado.
- SHA-2 (SHA-256, SHA-512) → padrão atual seguro.
- bcrypt / scrypt / yescrypt / Argon2 → funções modernas de derivação de chave, lentas de propósito (para dificultar ataques de força bruta).
🔹 Tipos de Cifra (Cyphers)
1. Simétricas (mesma chave para encriptar/decriptar)
- Rápidas, mas exigem que a chave seja compartilhada em segurança.
- Exemplos: AES, DES, 3DES, ChaCha20.
2. Assimétricas (chaves diferentes: pública e privada)
- Mais lentas, mas não exigem compartilhar a chave secreta.
- Exemplos: RSA, ECC, ElGamal.
3. Funções de Hash + Salt para Senhas
- Não são cifras, mas protegem senhas em bancos de dados.
- Exemplos: bcrypt, scrypt, Argon2, yescrypt.
🔹 Quando usar cada um?
- Hash sem salt → nunca para senhas, só para verificar integridade (ex: verificar se um arquivo foi alterado).
- Hash + salt (bcrypt, Argon2) → ideal para armazenar senhas.
- Cifra simétrica (AES, ChaCha20) → ideal para dados em repouso (ex: criptografar HD).
- Cifra assimétrica (RSA, ECC) → ideal para troca de chaves e autenticação (ex: HTTPS, certificados digitais).
👉 Quer que eu monte isso em formato de cheat sheet visual (tabelas e exemplos curtos) para você usar como referência rápida?