# Armazenando senhas: bcrypt, scrypt e Argon2

> Por que um hash rápido como o SHA-256 é a ferramenta errada para senhas, e o que o sal e os fatores de trabalho de fato fazem.

Source: https://ronutz.com/pt-BR/learn/password-hashing  
Updated: 2026-06-27  
Related tools: https://ronutz.com/pt-BR/tools/hash

---

## Por que não simplesmente o SHA-256?

Um hash criptográfico comum como o SHA-256 é a ferramenta certa para integridade, mas a ferramenta **errada** para armazenar senhas, e o motivo é justamente a propriedade que o torna bom em outros lugares: ele é rápido. Um atacante que rouba um banco de dados de hashes SHA-256 de senhas pode tentar **bilhões de tentativas por segundo** em hardware comum, porque cada tentativa é apenas um hash rápido. Senhas comuns caem quase instantaneamente. A velocidade, a virtude de um hash de propósito geral, é uma desvantagem aqui.

O armazenamento de senhas precisa de um hash que seja **deliberadamente lento** e resistente a hardware especializado. Três blocos de construção fazem isso funcionar: sal, um fator de trabalho ajustável e dureza de memória.

## Sal: derrotando a pré-computação

Um **sal** (salt) é um valor aleatório único armazenado junto a cada hash de senha e misturado ao processo de hash. Sem sais, senhas idênticas produzem hashes idênticos, então um atacante pode pré-computar uma tabela gigante de hashes de senhas comuns uma vez (uma "rainbow table") e consultar cada correspondência instantaneamente. Um sal único por senha torna essa pré-computação inútil: o atacante precisa atacar cada hash individualmente, e a mesma senha gera hash diferente para cada usuário. As funções modernas de hash de senha geram e armazenam o sal para você.

## Fator de trabalho: tornando cada tentativa cara

Um **fator de trabalho** (ou parâmetro de custo) controla quanta computação cada hash exige. Defina-o de modo que um único hash seja lento o bastante para ser imperceptível em um login legítimo (algumas centenas de milissegundos), mas punitivo em escala. Por ser um parâmetro, você pode aumentá-lo ao longo dos anos conforme o hardware fica mais rápido, mantendo o custo de adivinhação aproximadamente constante. Este é o ajuste que um hash de propósito geral simplesmente não tem.

## As três escolhas padrão

- O **bcrypt** é a opção consolidada e bem compreendida, construída sobre a cifra Blowfish com um fator de custo configurável. Um padrão seguro onde estiver disponível.
- O **scrypt** acrescenta **dureza de memória**: ele consome deliberadamente uma quantidade ajustável de memória, o que prejudica atacantes que usam GPUs e chips personalizados, já que estes escalam a computação de forma muito mais barata do que a memória.
- O **Argon2** venceu a Password Hashing Competition em 2015 e é a recomendação atual para novos sistemas. É de memória dura, com ajustes separados para memória, tempo e paralelismo; a variante **Argon2id** é a escolha usual.

Qualquer uma destas é uma escolha razoável; a regra cardinal é usar **uma delas**, nunca um hash rápido puro, e nunca inventar seu próprio esquema.

## A conclusão

Use o SHA-256 (na [ferramenta Hash](https://ronutz.com/pt-BR/tools/hash)) para somas de verificação e integridade, onde a velocidade é uma vantagem. Para senhas, recorra a bcrypt, scrypt ou Argon2, onde a lentidão e o custo de memória são todo o ponto. Os dois trabalhos parecem semelhantes e exigem ferramentas opostas.
