Hash Bcrypt 🔒 Roda localmente no seu navegador — nada é enviado.

Faça o hash de uma senha com bcrypt, ou verifique uma contra um hash.

 

Sobre esta ferramenta

Bcrypt é uma função de hashing de senhas projetada para ser deliberadamente lenta, que é exatamente o que você quer: torna a adivinhação por força bruta cara. Seu fator de custo permite aumentar essa lentidão conforme o hardware fica mais rápido. Use a aba Hash para transformar uma senha em um hash bcrypt e semear um banco de dados de teste, e a aba Verificar para checar se uma senha corresponde a um hash que você já tem.

Roda no seu navegador com a biblioteca bcryptjs, então nenhuma senha é enviada a um servidor. Note que bcrypt serve para armazenar senhas, não para uma criptografia reversível.

Perguntas frequentes

Por que usar bcrypt em vez de SHA-256 para senhas?

O SHA-256 é rápido — ótimo para integridade de arquivos, mas péssimo para senhas, porque atacantes conseguem testar bilhões de tentativas por segundo. O bcrypt é propositalmente lento e inclui um salt aleatório por hash, o que torna a força bruta e os ataques com rainbow tables pré-computadas impraticáveis.

O que significa o número de "custo" (cost)?

O custo é um fator de trabalho em potência de dois: cada +1 aproximadamente dobra o tempo para calcular um hash. Custo 10 (o padrão) leva algumas dezenas de milissegundos; custo 14-15 pode levar segundos. Escolha o custo mais alto que seu servidor consiga suportar por login sem virar um gargalo.

Minhas senhas são enviadas para um servidor?

Não. O hash e a verificação rodam inteiramente no seu navegador, em um Web Worker quando disponível, para que o hashing de custo 15 não trave a aba. Nada do que você digita aqui é transmitido ou armazenado em lugar nenhum.

Por que cada hash bcrypt da mesma senha é diferente?

O bcrypt gera um novo salt aleatório a cada vez que você faz o hash, e esse salt fica embutido na própria string de saída ($2b$10$<salt><hash>). Isso é esperado, e é exatamente o que impede que duas senhas idênticas gerem hashes idênticos.

Por que a verificação falhou com "formato de hash inválido" em vez de "não corresponde"?

Um hash bcrypt válido sempre corresponde ao padrão $2a/b/x/y$<custo>$<53 caracteres>. Se o que você colou não corresponde — truncado, algoritmo errado, espaço extra — isso é um problema diferente de uma senha errada, por isso é relatado separadamente.