Criptografía
Cálculo BCrypt
Calcula el hash BCrypt de un texto en el navegador. El texto no se envía al servidor.
| Texto | |
|---|---|
| Rondas |
※El hash se calcula en su navegador. Ni el texto ingresado ni el hash calculado se envían al servidor.
Tips
- BCrypt añade automáticamente un salt, por lo que la misma entrada produce un hash diferente cada vez que se hashea.
- Aumentar el número de rondas (factor de coste) incrementa el coste computacional, mejorando la resistencia a ataques de fuerza bruta. Se recomienda un valor de 10–12.
- En PHP usa
password_hash($password, PASSWORD_BCRYPT); en Ruby usa el gembcrypt-rubypara generar hashes equivalentes. - El prefijo
$2y$en el hash es el identificador del algoritmo; el número que le sigue es el número de rondas. - Considera también el más nuevo Argon2 (disponible desde PHP 7.2) como otro algoritmo adecuado para almacenar contraseñas.
A propósito — La batalla de contraseñas y hashes: por qué se elige BCrypt
En la filtración de LinkedIn en 2012, aproximadamente 6,5 millones de contraseñas se almacenaron usando solo SHA-1 sin salt, y la mayoría fueron crackeadas en días mediante ataques de tabla arcoíris. Este incidente fue una llamada de atención para el diseño del almacenamiento de contraseñas.
Una GPU moderna de alto rendimiento (como la NVIDIA RTX 4090) puede calcular MD5 aproximadamente 68.000 millones de veces por segundo. BCrypt está diseñado intencionalmente para ser costoso computacionalmente — con 12 rondas, está limitado a unos pocos miles de cálculos por segundo — lo que le da una resistencia dramáticamente mayor a los ataques de fuerza bruta. Con el mismo hardware, podrías intentar 68.000 millones de intentos MD5 por segundo, pero solo unos pocos miles de BCrypt. Esa diferencia es crítica.
BCrypt fue diseñado originalmente para OpenBSD en 1999. Más de 20 años después, sigue en uso activo y, junto con el más nuevo Argon2 (disponible desde PHP 7.2), es una de las opciones estándar para el almacenamiento de contraseñas.