Lição 1

O que é um hash?

Resumos unidirecionais e onde desenvolvedores usam hash.

Uma função de hash recebe dados de qualquer tamanho e produz um digest de tamanho fixo, muitas vezes em hexadecimal. A mesma entrada e o mesmo algoritmo sempre geram o mesmo digest. Até uma mudança de um caractere costuma mudar o digest por completo.

Hash é unidirecional

Você calcula hash a partir dos dados, mas não reverte o hash de forma confiável para recuperar a entrada original. Por isso hashes servem como impressão digital, não como recuperação de segredo.

Hash é determinístico

Se você faz hash dos bytes Hello com SHA-256 duas vezes, obtém o mesmo resultado. Isso ajuda em comparações:

  • O arquivo baixado bate com o checksum publicado?
  • A config mudou desde ontem?
  • Dois payloads de API são byte a byte iguais?

Onde desenvolvedores veem hash

Lugares comuns:

  • Campos de integridade em lockfiles de gerenciadores de pacotes
  • IDs de commit Git (baseado em SHA-1, com formatação própria do Git)
  • Headers HTTP ETag e chaves de cache
  • Armazenamento de senha com key stretching adequado (nunca MD5 puro sozinho)
  • Blockchain e impressões digitais de certificado (em geral algoritmos mais fortes)

Hash detecta mudança, não intenção

Hash diz se duas sequências de bytes coincidem sob um algoritmo escolhido. Não diz quem criou os dados, se são seguros para executar ou se houve adulteração — a menos que você já confie na fonte do hash de referência.

Voltar à visão geral do curso