Desenvolvedor 🔒 Roda no seu navegador — nenhum dado é enviado

Gerador e Verificador de Hash Bcrypt

Crie um hash bcrypt para uma senha, ou teste se uma senha corresponde a um hash armazenado, sem que nada saia do seu navegador.

Texto de entrada

Gerar e verificar hashes bcrypt online

O bcrypt é um algoritmo de hash de senhas feito para ser lento de propósito. Um hash de uso geral como o SHA-256 pode ser calculado bilhões de vezes por segundo, que é exatamente o que quer quem tenta adivinhar senhas de um banco de dados vazado; o bcrypt torna cada tentativa cara, e o fator de custo permite que esse preço cresça à medida que o hardware fica mais rápido. Ele é o padrão no PHP, Laravel, Ruby on Rails, Spring Security e muitos outros frameworks.

Esta página abre a aba bcrypt do Gerador de Hash. Usos típicos: criar a primeira conta de administrador direto no banco de dados, escrever um fixture de teste ou descobrir por que um usuário não consegue fazer login.

Lendo um hash bcrypt

Um hash bcrypt sempre tem 60 caracteres e carrega tudo o que é preciso para conferi-lo depois. Veja $2y$10$N9qo8uLOickgx2ZMRZoMye...:

ParteSignificado
$2y$Prefixo de versão
10Custo: 2 elevado a 10, ou seja, 1.024 rodadas de preparação da chave
Os 22 caracteres seguintesO salt aleatório
Os últimos 31 caracteresO hash propriamente dito

Escolhendo o custo

Aqui o custo pode ir de 4 a 14. Cada ponto dobra o trabalho, então custo 12 é quatro vezes mais lento que custo 10. Mire em um tempo de hash de uma fração de segundo no seu próprio servidor; a ferramenta mostra o progresso enquanto trabalha, o que dá uma noção da diferença. Como o custo fica gravado no hash, você pode aumentá-lo depois e refazer o hash de cada senha no próximo login do dono.

O limite de 72 bytes

O bcrypt só lê os primeiros 72 bytes de uma senha. Uma entrada mais longa não é rejeitada, é cortada sem aviso, então duas senhas longas que compartilham os primeiros 72 bytes geram o mesmo hash. Caracteres fora do inglês, como letras acentuadas e o ç, costumam ocupar de dois a quatro bytes cada em UTF-8, então o limite chega antes do que a contagem de caracteres sugere. A ferramenta conta os bytes enquanto você digita e avisa assim que passar de 72.

Conferindo um hash no código

LinguagemCriarVerificar
PHPpassword_hash($pw, PASSWORD_BCRYPT)password_verify($pw, $hash)
Node.js (bcryptjs)bcrypt.hash(pw, 10)bcrypt.compare(pw, hash)
Python (bcrypt)bcrypt.hashpw(pw, bcrypt.gensalt())bcrypt.checkpw(pw, hashed)

Para senhas aleatórias a transformar em hash, use o gerador de senhas. Para checksums de arquivos em vez de senhas, fique com o SHA-256.

Guias relacionados