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 tu navegador. Ni el texto ingresado ni el hash calculado se envían al servidor.
Qué es un hash BCrypt
BCrypt es un algoritmo de hash diseñado expresamente para almacenar contraseñas. A diferencia de funciones rápidas como SHA-256, su rasgo decisivo es que el cálculo se hace pesado a propósito, lo que frena físicamente la velocidad a la que un atacante puede probar grandes cantidades de candidatos. Con esta herramienta indica una cadena cualquiera y un número de rondas y genera en el acto un hash BCrypt real.
El cálculo lo realiza por completo el JavaScript de su navegador, así que ni la cadena que teclea ni el hash resultante se envían a un servidor. Dicho esto, si va a emplear un hash generado aquí como contraseña en producción, vuelva a fijar el número de rondas según el rendimiento del servidor en el que realmente opera. Un ajuste cómodo en la máquina que tiene delante no supone necesariamente un tiempo de respuesta razonable en producción.
Cómo calcular un hash BCrypt
- Introduzca la cadena que quiere convertir en hash Teclee la contraseña u otro objetivo en el campo de la cadena. Lo que introduce no sale de su navegador.
- Decida el número de rondas El número de rondas también se llama factor de coste, y cada incremento duplica aproximadamente el tiempo de cálculo. Si no tiene un requisito concreto, empiece probando 10.
- Ejecute el cálculo Pulse el botón de calcular y aparecerá el valor del hash. Cuanto mayor sea el número de rondas, más esperará por el resultado.
- Observe cómo está construido el resultado La salida une el identificador de algoritmo, el número de rondas, la sal y el propio hash en una sola cadena. Guardar esa única cadena es cuanto necesita para verificar después.
Consejos para aprovecharla mejor
- 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. Pruébalo con nuestra Calculadora de hash Argon2.
Cuándo resulta útil calcular un hash BCrypt
Preparar usuarios de prueba durante el desarrollo
Cuando quiera insertar una cuenta de prueba directamente en la base de datos, construya aquí el hash de la contraseña que prefiera e insértelo. Así se ahorra por completo arrancar la aplicación.
Hacerse una idea de la relación entre rondas y tiempo de proceso
Calcule la misma cadena cambiando solo el número de rondas y verá el tiempo duplicarse de verdad con cada incremento. Le da algo concreto sobre lo que fundar el ajuste de producción.
Descifrar los ajustes de un hash existente
Compárelo con un hash guardado en un sistema que usted opera y sabrá con qué número de rondas está funcionando ese sistema.
Comparar con otros algoritmos
Calcule la misma cadena también con Argon2 y alinee los formatos de salida y los tiempos requeridos: ya tiene una base para decidir entre ambos.
El vocabulario de BCrypt
- Sal
- Un valor aleatorio que se añade a la cadena antes del hash. Como el valor almacenado difiere incluso para la misma contraseña, impide un descifrado masivo mediante una tabla precalculada.
- Número de rondas
- Llamado también factor de coste, este ajuste determina cuántas veces se repite el cálculo. Cada incremento duplica aproximadamente el tiempo necesario.
- Factor de coste
- Otra manera de nombrar lo mismo que el número de rondas. Expresa hasta dónde se hace pesado el cálculo a propósito, para frenar el ritmo de los intentos de un atacante.
- Tabla arcoíris
- Una tabla preparada que enumera las contraseñas habituales junto a sus valores de hash. En cuanto hay una sal, los valores dejan de coincidir y el ataque deja de funcionar.
- Identificador de algoritmo
- La marca como
$2y$al principio de una cadena de hash. Quien verifica la usa para reconocer con qué método se produjo. - Argon2
- Un método más reciente, elegido en la Password Hashing Competition de 2015. Además del tiempo de cálculo permite indicar también la memoria requerida, lo que se considera que lo hace resistente a los ataques con hardware dedicado.
Preguntas frecuentes
password_verify() leen el salt incrustado en el hash almacenado para realizar la comparación.password_verify() de PHP o funciones equivalentes en otros lenguajes. Ten cuidado con el manejo de cualquier entrada sensible.
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.