Criptografia e a base de toda seguranca moderna. Entender quando usar hashing vs encryption, symmetric vs asymmetric, e como funcionam JWT e OAuth 2.0 e essencial para qualquer desenvolvedor .NET.

Fundamentos de Criptografia

Criptografia resolve tres problemas fundamentais: confidencialidade (ninguem le meus dados), integridade (ninguem alterou meus dados) e autenticidade (quem enviou e realmente quem diz ser).

PlaintextDado originalEncryptionChave (key)CiphertextDado cifradoDecryptionChave (key)PlaintextDado original

Conceitos-Chave

ConceitoDescricaoExemplo
HashingFuncao one-way que transforma dados em digest de tamanho fixo. Irreversivel.SHA-256, bcrypt, PBKDF2
Symmetric EncryptionMesma chave para encrypt e decrypt. Rapido, ideal para dados em volume.AES-256, ChaCha20
Asymmetric EncryptionPar de chaves: publica (encrypt) e privada (decrypt). Mais lento, ideal para troca de chaves.RSA, ECDSA, Ed25519
Digital SignatureAssina com chave privada, verifica com publica. Garante autenticidade + integridade.RSA-SHA256, ECDSA
Certificate (X.509)Documento digital que vincula uma chave publica a uma identidade. Emitido por CA.TLS certs, code signing
Key DerivationDeriva chaves criptograficas a partir de uma senha ou material base.PBKDF2, HKDF, Argon2

Hashing vs Encryption

PropriedadeHashingEncryption
Reversivel?Nao β€” one-waySim β€” two-way (com chave)
Precisa de chave?Nao (exceto HMAC)Sim β€” symmetric ou asymmetric
Output fixo?Sim β€” sempre mesmo tamanhoNao β€” proporcional ao input
Deterministic?Sim β€” mesmo input = mesmo outputDepende β€” AES-CBC com IV aleatorio gera outputs diferentes
Use caseSenhas, checksums, integridade de dadosDados em transito (TLS), dados em repouso, comunicacao segura
Hashing NAO e encryption. Hash e one-way β€” voce nunca recupera o dado original. Encryption e two-way β€” com a chave correta, voce recupera o dado. Confundir os dois e erro grave em entrevista.
Qual a diferenca entre hashing e encryption?
Hashing e uma funcao one-way: transforma dados em um digest de tamanho fixo (ex: SHA-256 gera 256 bits). Nao e possivel reverter. Usado para verificar integridade (checksums) e armazenar senhas (bcrypt). Encryption e two-way: com a chave correta, voce recupera o dado original. Symmetric (AES) usa uma chave para ambos; asymmetric (RSA) usa par de chaves. Usado para proteger dados em transito (TLS) e em repouso. Nunca use encryption para senhas β€” use hash com salt. Nunca use hash quando precisa recuperar o dado β€” use encryption.