Criptografía

Validación BCrypt

Valida si el hash fue calculado a partir del texto ingresado.


Hash
Texto

Coincide

No coincide

Tips

  • BCrypt incorpora el salt en el hash, por lo que aunque el hash difiera cada vez, se considerará coincidencia si fue generado a partir de la misma entrada original.
  • Esta herramienta verifica usando el mismo mecanismo que password_verify($password, $hash) de PHP.
  • Al comparar un hash obtenido de la base de datos con una contraseña introducida, usa una función de verificación dedicada en lugar de una comparación de cadenas simple (==) para evitar ataques de temporización.
  • Los hashes que comienzan con $2a$ también pueden verificarse como BCrypt.

A propósito — Detrás de la autenticación: qué son esos pocos cientos de milisegundos al iniciar sesión

Cuando pulsas el botón de inicio de sesión en un servicio web, parte de esos pocos cientos de milisegundos antes de recibir el resultado es el tiempo que BCrypt dedica a calcular el hash de la contraseña. Ese retraso es intencional — hecho por seguridad.

Un ataque de temporización (Timing Attack) es un tipo de ataque de canal lateral donde un atacante deduce información secreta midiendo sutiles diferencias en el tiempo de procesamiento. Cuando una contraseña se verifica con una comparación de cadenas simple (==), el tiempo de comparación varía ligeramente según dónde dejan de coincidir los caracteres. La función de verificación de BCrypt está diseñada para ejecutarse en tiempo constante, protegiéndola contra este ataque.

En aplicaciones web reales, se recomienda devolver una respuesta en el mismo tiempo independientemente de si el usuario existe o no, como si el usuario existiera pero la contraseña fuera incorrecta. Si un atacante puede distinguir "el usuario no existe" de "contraseña incorrecta", le da una pista para identificar nombres de usuario válidos.