Ferramentas
Guias

bcrypt Hash e Verificação

Cripto

Faç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.

100% no cliente Sem backend

URLs remotas não são buscadas; cole seu JSON diretamente.

Modo
12

⚠ Custo mais alto é mais lento e mais seguro

Digite uma senha e clique em Hash (custo %n).
bcrypt

🔒 Processado localmente — nada sai do seu navegador
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#

  1. Escolha um modo: Hash (produzir uma string bcrypt a partir de uma senha) ou Verificar (verificar uma senha contra um hash existente).
  2. 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.
  3. 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.
  4. No modo verificar, cole o hash existente no campo que aparece. O custo é lido automaticamente do próprio hash — não se define.
  5. 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, significando 2^12 rounds 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.