SHA-256 vs. Bcrypt: Qual hash é melhor para senhas?
Comparamos SHA-256 vs. Bcrypt para o armazenamento seguro de senhas. Entenda por que algoritmos lentos ajudam a evitar ataques de força bruta.

Ao escolher o mecanismo para salvar credenciais, comparar SHA-256 vs. Bcrypt é fundamental para resguardar a segurança de qualquer sistema moderno. Salvar senhas em texto plano é uma negligência crítica que expõe diretamente os sistemas a incidentes catastróficos. No entanto, nem todos os algoritmos de hash são criados iguais, e confundir a integridade da informação com a proteção de credenciais é um erro comum entre desenvolvedores.
Neste artigo, analisaremos detalhadamente os princípios criptográficos de ambos os algoritmos. Explicaremos por que os algoritmos matematicamente rápidos representam um risco severo para as senhas de seus usuários e como os algoritmos com fator de custo adaptável nos permitem construir defesas robustas contra ataques de força bruta modernos.
O que é SHA-256 e por que não é adequado para senhas?
O SHA-256 (Secure Hash Algorithm de 256 bits) é uma função criptográfica de hash de sentido único desenvolvida pela NSA. Seu principal objetivo é verificar a integridade de arquivos e dados, o que significa que é ideal para verificar se um arquivo de vários gigabytes foi alterado, assinar certificados digitais ou validar transações em uma blockchain.
Para cumprir esse propósito de verificação de integridade, o SHA-256 foi projetado para ser extremamente rápido e leve no consumo de CPU. Ele consegue processar imensas quantidades de informações em poucos milissegundos.
Embora essa velocidade seja excelente para a validação de arquivos, trata-se de um ponto fraco severo quando aplicado a senhas. Se o banco de dados do seu sistema for comprometido, um cibercriminoso que obtenha os hashes poderá realizar ataques de força bruta a velocidades absurdas. Utilizando hardware de consumo comum, como placas de vídeo (GPUs) ou chips ASIC, um hacker pode rodar bilhões de hashes por segundo, quebrando a maioria das senhas fracas em poucos minutos.
Por que o Bcrypt é a opção ideal para salvar senhas?
Diferente do SHA-256, o Bcrypt é uma função de derivação de chave (KDF) baseada no cifrado Blowfish, criada especificamente para o armazenamento seguro de senhas. Desenvolvida em 1999 por Niels Provos e David Mazières, ela inclui três recursos cruciais que anulam a vantagem de velocidade do hardware do invasor:
- Sal (Salt) automático integrado: O Bcrypt incorpora de forma nativa um sal aleatório de 128 bits para cada senha processada. Isso evita ataques que utilizam tabelas arco-íris (rainbow tables) pré-calculadas e garante que dois usuários com a mesma senha possuam hashes armazenados completamente distintos.
- Fator de custo adaptável: O Bcrypt permite que o desenvolvedor determine o custo computacional do processamento. Ao aumentar esse fator, o algoritmo requer exponencialmente mais iterações de CPU, atrasando o processo de validação intencionalmente.
- Resistência à aceleração por hardware: O processamento do Bcrypt exige um consumo considerável de memória de trabalho. Isso dificulta muito a paralelização maciça em placas gráficas (GPUs) ou circuitos integrados personalizados (ASICs), tornando o custo de computação do hacker inviável.
Tabela comparativa: SHA-256 vs. Bcrypt
Analisemos as diferenças operacionais e criptográficas mais determinantes entre ambos os algoritmos:
| Critério | SHA-256 | Bcrypt |
|---|---|---|
| Tipo de algoritmo | Hash rápido de sentido único | Função de derivação de chaves (KDF) |
| Projetado para | Integridade de dados e assinaturas | Armazenamento seguro de senhas |
| Sal (Salt) integrado | Não (Deve ser implementado manualmente) | Sim (Gerado automaticamente por padrão) |
| Velocidade de cálculo | Extremamente rápida (Nanosegundos) | Controlada / Lenta (Milisecundes) |
| Fator de custo ajustável | Não | Sim (Proteção contra a evolução do hardware) |
| Resistência a GPU/ASIC | Muito baixa | Alta (Limita ataques paralelos em massa) |
| Padrão recomendado | Não recomendado para credenciais | Altamente recomendado (Padrão de mercado) |
Implementação segura de hash em Node.js
Para garantir a proteção do seu banco de dados, você deve utilizar bibliotecas criptográficas testadas que implementem o Bcrypt corretamente. Abaixo está um exemplo em Node.js mostrando como gerar o hash de uma senha durante o cadastro do usuário e como verificá-la no momento do login:
const bcrypt = require('bcrypt');
// Fator de custo recomendado (12 iterações equilibram desempenho e segurança)
const saltRounds = 12;
// 1. Hashear senha durante o registro do usuário
async function cadastrarUsuario(senhaPlana) {
try {
// O Bcrypt gera automaticamente o sal e insere o fator de custo no hash
const hash = await bcrypt.hash(senhaPlana, saltRounds);
console.log(`Hash gerado: ${hash}`);
return hash; // Armazenar este hash seguro no banco de dados
} catch (error) {
throw new Error('Erro ao processar o hash da senha');
}
}
// 2. Verificar senha no momento do login
async function verificarLogin(senhaPlana, hashArmazenado) {
try {
// A biblioteca extrai o sal e o custo automaticamente do string do hash
const ehValido = await bcrypt.compare(senhaPlana, hashArmazenado);
return ehValido; // Retorna true se coincidir, caso contrário false
} catch (error) {
throw new Error('Erro no processo de verificação da senha');
}
}
Este trecho de código demonstra como o Bcrypt agrupa o sal diretamente no string gerado, minimizando a chance de erro humano na sua implementação.
Ferramentas recomendadas para auditar senhas
Para verificar a conformidade de suas chaves criptográficas e testar a robustez das senhas dos seus usuários, sugerimos utilizar as seguintes soluções disponíveis no nosso portal:
- Se você precisa criar assinaturas digitais rápidas para arquivos ou tokens sem fins de autenticação, utilize o nosso Gerador de Hash.
- Para testar a complexidade e a entropia das senhas definidas pelos usuários, use o Verificador de Senhas.
Para ampliar seu conhecimento sobre cibersegurança, sugerimos ler os nossos artigos sobre como compartilhar senhas com segurança na internet, os diferenciais técnicos envolvidos em uma auditoria de vulnerabilidades com IA vs pentesting humano, e o alerta recente sobre a vulnerabilidade de execução de código no Cursor IDE por meio de git malicioso em 2026.
Conclusão: A escolha criptográfica correta
A definição do algoritmo correto para proteger o acesso dos seus usuários determina a segurança e a integridade de todo o seu sistema. O SHA-256 é excelente para assegurar a autenticidade de arquivos, mas nunca deve ser aplicado ao armazenamento de senhas.
Para guardar senhas de forma segura, o Bcrypt (e padrões avançados como o Argon2id) continua sendo a melhor escolha da indústria. Seu fator de custo adaptável garante que sua infraestrutura consiga se ajustar ao desenvolvimento de hardwares mais potentes por parte dos cibercriminosos, mantendo as credenciais de acesso protegidas mesmo que ocorra vazamento do seu banco de dados.
Fontes e leituras recomendadas:
- OWASP Password Storage Cheat Sheet — O principal guia de referência técnica da OWASP.
- NIST Special Publication 800-63B — Diretrizes globais de identidade e armazenamento de credenciais.
- Artigo correlato no TecnoCrypter: Como compartilhar senhas com segurança na internet.


