Validação BCrypt

Valida se o hash foi calculado a partir do texto inserido.


Hash
Texto

Coincide

Não coincide

Tips

  • BCrypt incorpora o salt no hash, portanto mesmo que o hash seja diferente a cada vez, será considerado como correspondência se foi gerado a partir da mesma entrada original.
  • Esta ferramenta verifica usando o mesmo mecanismo que password_verify($password, $hash) do PHP.
  • Ao comparar um hash obtido do banco de dados com uma senha inserida, use uma função de verificação dedicada em vez de uma comparação simples de strings (==) para evitar ataques de temporização.
  • Hashes que começam com $2a$ também podem ser verificados como BCrypt.

Perguntas frequentes

BCrypt incorpora um salt aleatório dentro do próprio hash. Durante a verificação, o salt é extraído do hash e a entrada é re-hasheada com o mesmo salt para comparação, então hashes com aparências diferentes ainda podem corresponder corretamente.

Ambos são compatíveis e esta ferramenta pode verificar qualquer um dos dois. $2b$ é uma versão com correção de bug da implementação antiga, e seu uso é atualmente recomendado.

Não. BCrypt é uma função hash unidirecional, e é computacionalmente inviável reverter um hash para a senha original. Esta ferramenta apenas verifica se uma entrada corresponde a um hash — ela não pode recuperar o valor original.
ツールくん

Curiosidade — Por trás da autenticação: o que são esses poucos centésimos de segundo no login

Quando você pressiona o botão de login em um serviço web, parte desses poucos centésimos de segundo antes do resultado chegar é o tempo que o BCrypt gasta calculando o hash da senha. Esse atraso é intencional — feito por segurança.

Um Ataque de Temporização (Timing Attack) é um tipo de ataque de canal lateral onde um invasor deduz informações secretas medindo diferenças sutis no tempo de processamento. Quando uma senha é verificada com uma comparação simples de strings (==), o tempo de comparação varia ligeiramente dependendo de onde os caracteres param de coincidir. A função de verificação do BCrypt é projetada para executar em tempo constante, protegendo contra esse ataque.

Em aplicações web reais, é recomendado retornar uma resposta no mesmo tempo independente de o usuário existir ou não, como se o usuário existisse mas a senha estivesse errada. Se um invasor pode distinguir "usuário não existe" de "senha incorreta", isso dá uma dica para identificar nomes de usuário válidos.