Criptografia

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.

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.