O que faz
bcrypt é uma função de hash de senhas feita para ser lenta. Ao contrário de MD5 ou SHA-256, que podem ser calculados bilhões de vezes por segundo, o bcrypt tem um custo configurável que torna cada tentativa cara para quem roubar seu banco de dados. Ainda é uma das opções mais usadas para guardar senhas, ao lado de Argon2 e scrypt.
Esta ferramenta faz duas coisas:
- Gerar hash: transforma uma senha em hash bcrypt com o custo e o prefixo de versão escolhidos.
- Verificar: confere se uma senha corresponde a um hash bcrypt existente, por exemplo do seu banco de dados ou do arquivo de seed de um framework.
Como usar
- Digite uma Senha ou clique em Exemplo.
- No modo Gerar hash, escolha o Custo e a Versão. O hash aparece na hora; clique em Novo salt para obter outro.
- No modo Verificar, cole o Hash bcrypt para conferir. O resultado diz se a senha corresponde.
Como ler um hash bcrypt
Um hash como $2b$10$./3kakECWB0QfIgYzIqciuv449HNnwGbgExtJQQwQ1MofonthOdoK tem quatro partes: a versão 2b, o custo 10 (2¹⁰ rodadas de preparação da chave), um salt de 22 caracteres e um checksum de 31 caracteres. Tudo o que o servidor precisa para verificar a senha depois está nessa única string, por isso você guarda só o hash.
Limites importantes
O bcrypt lê apenas os primeiros 72 bytes da senha. Senhas mais longas, ou com muitos caracteres não ASCII (cada um ocupa de 2 a 4 bytes em UTF-8), são cortadas sem aviso. A ferramenta avisa quando isso acontece. Se precisar aceitar frases-senha muito longas, aplique um pré-hash ou considere o Argon2id.
Perguntas frequentes
› Por que recebo um hash diferente a cada vez para a mesma senha?
Cada hash usa um novo salt aleatório de 16 bytes, guardado dentro do próprio hash. Isso é proposital, para que senhas iguais não gerem hashes iguais. Para conferir uma senha, use Verificar em vez de comparar strings de hash.
› Que custo devo usar?
Escolha o maior custo que o seu servidor aguenta a cada login, normalmente de 10 a 12 hoje. Cada passo dobra o trabalho. Meça no hardware de produção; algo entre 100 e 300 ms por hash é uma meta comum.
› Qual a diferença entre $2a$, $2b$ e $2y$?
É o mesmo algoritmo. $2b$ é o prefixo atual do OpenBSD, $2y$ é o que o password_hash do PHP grava e $2a$ é o antigo. A maioria das bibliotecas aceita os três, então escolha o que o seu sistema espera.
› Minha senha é enviada para algum lugar?
Não. O hash e a verificação rodam no seu navegador. A senha e o hash conferido ficam apenas na memória desta página; não são salvos nem adicionados aos links de compartilhamento.