Skip to main content

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?