PK Systems PK Systems
Codificadores y decodificadores

Generador y Verificador de Hash bcrypt

Genera hashes de contraseña con el estándar bcrypt y verifica una contraseña contra cualquier hash bcrypt. Coste configurable.

Generador y Verificador de Hash bcrypt

El coste es logarítmico: cada paso duplica el trabajo. 10 es el predeterminado moderno; 12 para sistemas sensibles.

Hash bcrypt


        
    

¿Qué es bcrypt?

bcrypt es una función de hashing de contraseñas diseñada por Niels Provos y David Mazières en 1999. Se basa en el cifrado Blowfish y es deliberadamente lenta: un factor de coste configurable controla cuántas rondas de inicialización se ejecutan antes de producir el hash, lo que permite a los defensores subir el coste conforme avanza el hardware. Cada hash incluye un salt aleatorio de 128 bits, así que hashear la misma contraseña dos veces produce salidas distintas y las tablas rainbow precomputadas resultan inútiles. La salida tiene forma $2b$10$…, donde 2b es la versión, 10 el coste y el resto es salt y digest. bcrypt sigue siendo la opción de cabecera para almacenar contraseñas en 2026: más simple que Argon2, más probada que scrypt y soportada en cualquier lenguaje serio.

Cómo usar

Para hashear, escribe la contraseña, elige el coste y pulsa Generar hash. La salida va directa a tu base de datos. Para verificar, pega el hash de la base y escribe la contraseña candidata, luego pulsa Verificar. bcrypt incluye el coste dentro del propio hash, por lo que no necesitas elegirlo de nuevo al verificar — la librería lo lee de la cadena.

Cómo elegir el coste

Cada paso de coste duplica el tiempo. Elige el coste más alto que mantenga el login por debajo de ~250 ms en tu hardware. Para logins de alto tráfico en servidores comunes, 10 (~60 ms) es el mínimo moderno; 12 (~250 ms) es cómodo para cuentas sensibles; 13–15 se justifica en credenciales críticas, midiendo siempre la latencia. Sube el coste al renovar la base — re-hashea en el próximo inicio de sesión.

Referencia de coste (CPU moderna, 1 hilo)

Coste Iteraciones Tiempo aprox.
416~1 ms
8256~15 ms
10 (default)1,024~60 ms
124,096~250 ms
138,192~500 ms
1416,384~1 s
1532,768~2 s

Preguntas frecuentes

¿bcrypt sigue siendo seguro en 2026?
Sí. bcrypt con coste ≥10 sigue siendo un hash de contraseñas perfectamente aceptable. Argon2id es la primera opción de OWASP para proyectos nuevos, pero bcrypt es válido, maduro y fácil de auditar.
¿Dónde está el salt?
El salt se incluye dentro del propio hash, entre el coste y el digest. La librería lo extrae al verificar — nunca tienes que guardarlo aparte.
¿Cuál es el tamaño máximo de la contraseña?
La mayoría de las implementaciones truncan en silencio la contraseña a 72 bytes. Para contraseñas largas, pre-hashea (p. ej. SHA-256) y aplica Base64, o usa Argon2 cuando necesites soportar longitudes arbitrarias.
¿Por qué un coste alto va lento?
Es a propósito. La idea de bcrypt es encarecer la fuerza bruta. Para mantener la página fluida, esta herramienta ejecuta costes ≥12 en un Web Worker, dejando libre el navegador.
¿$2a$, $2b$ y $2y$ son distintos?
$2a$ es la versión original (con un bug conocido en caracteres de 8 bits desde PHP), $2b$ es la corregida que se usa hoy y $2y$ es una etiqueta específica de PHP anclada al comportamiento sin bug. El verificador acepta las tres.
¿La página envía mi contraseña a algún servidor?
No. El hashing y la verificación corren íntegramente en tu dispositivo. Tu contraseña, hash y resultado de verificación nunca salen de la página, nunca llegan a nuestros servidores y no se almacenan, indexan, registran ni comparten.