Generador Bcrypt
Genera y verifica hashes de contraseña bcrypt en línea. Factor de costo ajustable, salt integrado, vista previa en tiempo real. Todo el procesamiento se ejecuta localmente en tu navegador.
¿Qué es bcrypt?
Bcrypt es una función de hash de contraseñas diseñada por Niels Provos y David Mazières, basada en el cifrado Blowfish. Está diseñada específicamente para el almacenamiento seguro de contraseñas y es uno de los algoritmos de hash más utilizados en el mundo.
¿Cómo funciona bcrypt?
Bcrypt toma una contraseña y un salt como entrada, luego ejecuta un proceso costoso de configuración de claves (Eksblowfish) que produce un hash de longitud fija. El hash incluye el identificador del algoritmo, el factor de costo, el salt y el valor del hash.
¿Qué es el factor de costo en bcrypt?
El factor de costo es un número del 4 al 31 que determina cuántas iteraciones de la configuración de claves se realizan. Cada incremento duplica el tiempo de cálculo. Un costo de 10 significa 2^10 = 1024 iteraciones. Se recomiendan valores de 10-12 para la mayoría de aplicaciones.
¿Qué es un salt y por qué es importante?
Un salt es un valor aleatorio de 128 bits único para cada hash de contraseña. Previene que los atacantes usen tablas arcoíris precomputadas y asegura que contraseñas idénticas produzcan hashes diferentes. Bcrypt genera automáticamente el salt y lo incorpora en el hash.
¿Sigue siendo seguro bcrypt en 2025?
Sí, bcrypt sigue siendo uno de los algoritmos de hash recomendados. Aunque existen algoritmos más nuevos como Argon2, bcrypt se considera seguro cuando se usa con un factor de costo apropiado (12 o superior).
¿Cuál es la longitud máxima de contraseña para bcrypt?
Bcrypt tiene una longitud máxima de entrada de 72 bytes. Las contraseñas más largas se truncan silenciosamente. Para contraseñas más largas, considere pre-hashear con SHA-256 antes de aplicar bcrypt.
¿Cómo se compara bcrypt con MD5, SHA-256 y otras funciones hash?
A diferencia de MD5 y SHA-256 diseñados para velocidad, bcrypt es intencionalmente lento y computacionalmente costoso. Las funciones hash de propósito general pueden calcular miles de millones de veces por segundo, lo que las hace vulnerables a ataques de fuerza bruta.
¿Cuál es el formato del hash bcrypt?
Un hash bcrypt sigue el formato: $2b$costo$salt+hash. Por ejemplo: $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy. El prefijo $2b$ identifica la versión del algoritmo, seguido del factor de costo, salt de 22 caracteres y hash de 31 caracteres.
¿Cuál es la diferencia entre $2a$, $2b$ y $2y$?
Son identificadores de versión de bcrypt. $2a$ es la versión original, $2b$ corrige un problema menor con la longitud de contraseña en OpenBSD, y $2y$ es la variante específica de PHP. Las tres son compatibles.
¿Es seguro usar un generador bcrypt en línea?
Cuando el procesamiento se ejecuta enteramente en su navegador (lado del cliente), es completamente seguro. Ningún dato de contraseña se transmite a ningún servidor. Esta herramienta procesa todo localmente usando JavaScript.
¿Cómo elegir el factor de costo adecuado?
El factor de costo debe ser tan alto como sea posible manteniendo la generación de hash aceptablemente rápida. Una buena regla: elija el costo donde el hash tarda unos 250-500ms en su servidor. Para la mayoría de sistemas modernos, 10-12 es apropiado.
¿Puede bcrypt usarse para cifrar datos?
No, bcrypt es una función hash unidireccional, no un algoritmo de cifrado. No puede invertirse para recuperar la contraseña original. Está diseñado únicamente para verificación de contraseñas.
¿Por qué bcrypt es lento por diseño?
Bcrypt es intencionalmente lento para hacer que los ataques de fuerza bruta y diccionario sean computacionalmente costosos. Mientras una función hash normal puede procesar millones de contraseñas por segundo, bcrypt solo procesa unos pocos cientos.
¿Cómo verifico una contraseña contra un hash bcrypt?
Para verificar, extraiga el salt y el factor de costo del hash almacenado, ejecute bcrypt con los mismos parámetros en la contraseña de entrada y compare el hash resultante con el hash almacenado. Si coinciden, la contraseña es correcta.