Skip to content
Latchkey

O que é hashing de senha? Armazenando credenciais com segurança

O hashing de senha armazena uma transformação unidirecional de uma senha, de modo que mesmo um banco de dados roubado não revele as senhas originais.

O hashing de senha é como sistemas responsáveis armazenam credenciais. Em vez de manter a senha, você mantém um hash, a saída de uma função unidirecional que não pode ser revertida para recuperar a senha. Quando um usuário faz login, você aplica o hash à entrada dele e compara. Feito corretamente, com salting e um algoritmo lento, um banco de dados roubado é muito menos prejudicial.

Por que não armazenar senhas diretamente

Armazenar senhas em texto plano significa que uma única violação de banco de dados expõe todas as credenciais, e as pessoas reutilizam senhas em vários sites. O hashing garante que o valor armazenado não possa ser transformado de volta na senha, de modo que uma violação não entregue imediatamente logins funcionais aos atacantes.

O hashing é unidirecional

  • Uma função de hash mapeia uma entrada para uma saída de tamanho fixo.
  • Você não pode reverter a saída de volta para a entrada.
  • Você verifica aplicando o hash ao candidato e comparando as saídas.

Salt e lentidão

Um esquema seguro adiciona um salt exclusivo por senha (derrotando tabelas pré-computadas) e usa uma função deliberadamente lenta. A lentidão é uma vantagem aqui: ela torna a adivinhação em massa cara sem afetar de forma perceptível um único login legítimo.

Os algoritmos certos

Hashes de uso geral como SHA-256 são rápidos demais para senhas. Hashes de senha específicos, bcrypt, scrypt e Argon2, são intencionalmente lentos e ajustáveis. Usar um hash rápido para senhas é um erro clássico e perigoso.

Hashing de senha e CI/CD

Se sua aplicação lida com senhas, esse código é de alto risco e justifica uma revisão de segurança focada no pipeline. Análise estática e varreduras de dependências no CI podem detectar bibliotecas de hashing fracas ou configurações incorretas antes que cheguem à produção.

Mantenha os dados de teste limpos

Pipelines nunca devem semear credenciais reais nem fazer commit de material de senha. Fixtures de teste devem usar valores descartáveis, e a varredura de secrets no CI ajuda a detectar qualquer senha ou chave que escape para o repositório.

Principais conclusões

  • O hashing de senha armazena uma transformação irreversível, não a própria senha.
  • O hashing seguro usa um salt exclusivo e um algoritmo deliberadamente lento.
  • Use bcrypt, scrypt ou Argon2; nunca um hash rápido como SHA-256 para senhas.

Guias relacionados