bcrypt Hash e Verificação
CriptoFaça o hash de uma senha com bcrypt (custo adaptativo), ou verifique um texto simples contra um hash $2a$ / $2b$ existente. Custo ajustável, temporização calibrada — tudo no seu navegador.
URLs remotas não são buscadas; cole seu JSON diretamente.
⚠ Custo mais alto é mais lento e mais seguro
Nesta página
O que é o bcrypt?#
O bcrypt é uma função de hashing de senhas construída especificamente para ser lenta de propósito. Onde um hash rápido como o SHA-256 é desenhado para processar megabytes por segundo, o bcrypt é desenhado para custar tempo real por cada tentativa individual — de modo a que um atacante que roube uma base de dados de hashes de senhas não consiga tentar milhares de milhões de tentativas baratas. É a resposta padrão a “como devo guardar as senhas dos usuárioes”: faça-lhes hash com bcrypt, não com SHA-256 simples.
Duas coisas tornam o bcrypt adequado para esse trabalho. Primeiro, tem um fator de custo ajustável que escala o trabalho exponencialmente — subir o custo em 1 duplica aproximadamente o tempo por hash, pelo que o hardware pode ser ultrapassado girando um botão. Segundo, incorpora um sal aleatório em cada hash, de modo a que senhas idênticas façam hash para valores completamente diferentes e uma tabela pré-computada construída para uma base de dados é inútil contra outra. O sal e o custo são ambos transportados dentro da string de saída, pelo que a verificação não precisa de nada além da senha e do hash.
Esta página faz ambas as operações: fazer hash de uma senha para uma string bcrypt, e verificar uma senha contra um hash existente. Para manter a página responsiva, o hashing com custo 12 ou superior é transferido para um Web Worker, pelo que a computação pesada nunca congela a interface.
Como usar#
- Escolha um modo: Hash (produzir uma string bcrypt a partir de uma senha) ou Verificar (verificar uma senha contra um hash existente).
- Escreva a senha. Clique no ícone do olho para a revelar enquanto escreve; está mascarada por padrão. UTF-8 é aceite, incluindo emojis e scripts não latinos.
- No modo hash, defina o controlo deslizante de custo (4–14, predefinição 12). Mais alto é mais lento e mais forte. Aparece um aviso assim que o custo é suficientemente alto para demorar um tempo notório.
- No modo verificar, cole o hash existente no campo que aparece. O custo é lido automaticamente do próprio hash — não se define.
- Clique no botão principal. No modo hash a saída é a string bcrypt; no modo verificar a saída é um veredito claro de corresponde / não corresponde, mais uma leitura do tempo decorrido que ajuda a julgar o custo no seu próprio hardware.
Principais funcionalidades#
- Custo ajustável, 4–14. A predefinição de 12 é a recomendação moderna; cada passo duplica aproximadamente o trabalho, pelo que se consegue acompanhar hardware mais rápido ao longo dos anos.
- Descarregamento para Worker em custo altos. Custo 12 e superior corre num Web Worker para a página se manter responsiva; se os workers estão bloqueados, cai transparentemente para a thread principal com o mesmo resultado.
- Sal incorporado. Cada hash recebe um sal aleatório fresco codificado na saída, pelo que a mesma senha nunca faz hash duas vezes para a mesma string.
- Verificação com custo automático. O fator de custo é analisado a partir do hash que cola, pelo que não há desalinhamento entre como uma senha foi hashed e como é verificada.
- Zero envios. O hashing e a verificação acontecem localmente; a senha nunca sai da página.
Exemplo prático#
Abaixo está um hash real de hunter2 com custo 12, produzido por esta própria página. Como o sal é frescamente aleatório, fazer hash de hunter2 de novo dar-lhe-á uma string diferente — mas esta é genuína e verificável: cole-a no modo Verificar, escreva hunter2, e o veredito é corresponde.
$2b$12$DG/IWIDBmJlywamLdGno2.guEH5lGnQ1OTULdIGN8BH1vqiLIGzjy
Lê-lo campo a campo:
$2b$— a variante bcrypt (o bcryptjs emite$2b$; a verificação também aceita$2a$,$2x$,$2y$).12— o fator de custo, significando2^12rounds de expansão de chave.- os próximos 22 caracteres — o sal aleatório.
- os últimos 31 caracteres — o hash derivado.
Mude para Verificar, largue o hash acima no campo de hash existente, escreva hunter2, e o veredito é corresponde. Escreva Hunter2 em vez disso e é não corresponde — o bcrypt é sensível a maiúsculas e minúsculas, e um único carácter errado inverte o resultado. A figura de tempo decorrido mostrada ao lado é o custo real de uma verificação com custo 12 na sua máquina.
FAQ#
Que custo devo escolher?#
12 é uma predefinição sólida para sistemas novos hoje — demora cerca de algumas centenas de milissegundos em hardware típico, o que é indolor para um login real mas doloroso para tentativas em massa. Suba para 13 ou 14 para alvos de alto valor onde um login ligeiramente mais lento é aceitável. A regra-chave é voltar a afinar para cima ao longo dos anos à medida que o hardware melhora, porque o custo do bcrypt escala exponencialmente: cada incremento de 1 duplica aproximadamente o tempo.
Porque é que fazer hash da mesma senha duas vezes dá resultados diferentes?#
Porque o bcrypt gera um sal aleatório fresco de cada vez e incorpora-o na saída. Os dois hashes não se parecem em nada, mas ambos verificam contra a mesma senha. Esse é todo o ponto de salgar — impede que um atacante reconheça senhas repetidas ou reutilize uma tabela pré-computada.
Posso verificar um hash gerado noutro lado?#
Sim, desde que seja uma string bcrypt bem formada ($2a$, $2b$, $2x$, ou $2y$). Cole-o no campo de hash existente no modo verificar; a ferramenta lê o custo e o sal do próprio hash. Hashes exportados do bcrypt do Node, do password_hash do PHP, ou do passlib do Python funcionam todos aqui.
O bcrypt é melhor que o SHA-256 para senhas?#
Para guardar senhas de login, sim — enfaticamente. O SHA-256 é rápido, o que é exatamente a propriedade errada para um hash de senha guardada: um atacante com o hash pode tentar milhares de milhões de tentativas por segundo numa GPU. O bcrypt é deliberadamente lento e salgado, que é o que o armazenamento de senhas exige. Use SHA-256 para integridade e assinaturas; use bcrypt (ou os seus primos Argon2/scrypt) para senhas humanas.