En este artículo
Que es bcrypt?
bcrypt es una función de hash de contraseñas adaptativa diseñada en 1999. Basada en el cifrado Blowfish, bcrypt incorpora una sal y un factor de costo configurable que controla lo costoso computacionalmente que es calcular el hash.
A diferencia de funciones hash rapidas como MD5 o SHA-256, bcrypt esta diseñada especificamente para almacenamiento de contraseñas. Su naturaleza adaptativa permite aumentar el factor de costo con el tiempo.
Como funciona bcrypt
Un hash bcrypt contiene toda la información necesaria para verificar una contraseña en una sola cadena.
- $2b$ — el identificador de algoritmo para bcrypt versión 2b
- 10$ — el factor de costo (2^10 = 1024 rondas)
- 22 caracteres de sal codificada en Base64 (128 bits de aleatoriedad)
- 31 caracteres de salida de hash codificada en Base64
Pruébalo gratis — sin registro
Generar hash bcrypt →Elegir el factor de costo correcto
El factor de costo determina cuantas iteraciones realiza bcrypt. Cada incremento duplica el tiempo de calculo.
El objetivo es hacer el hash lo suficientemente lento para disuadir ataques de fuerza bruta pero rápido para la experiencia del usuario.
- Costo 10 — hash en ~100ms; buena base para la mayoría de aplicaciones web
- Costo 12 — hash en ~300-400ms; recomendado para alta seguridad
- Costo 14+ — hash en 1 segundo o mas; generalmente demasiado lento para login interactivo
bcrypt vs otros algoritmos de hash
No todos los algoritmos de hash son adecuados para almacenar contraseñas.
- MD5/SHA-256 — diseñados para velocidad; nunca usar para contraseñas
- bcrypt — resistente a CPU, probado desde 1999; la recomendacion por defecto
- Argon2 — ganador del Password Hashing Competition 2015; resistente a memoria; recomendado para nuevos proyectos
Casos de uso comunes
bcrypt se usa donde las contraseñas necesitan almacenarse de forma segura.
- Registro de usuario — hashear la contraseña con bcrypt antes de almacenarla
- Verificación de login — hashear la contraseña enviada y compararla con el hash almacenado
- Migración de contraseñas — al actualizar de MD5/SHA a bcrypt, rehashear contraseñas en el siguiente login exitoso
Preguntas frecuentes
Puedo cambiar el factor de costo sin resetear contraseñas?
Si. En cada login exitoso, verifique si el hash almacenado usa un factor de costo antiguo. Si es así, rehashee la contraseña con el nuevo factor. Esto se llama rehashing oportunista.
Como verifico una contraseña contra un hash bcrypt?
La cadena de hash bcrypt contiene la versión, factor de costo y sal. La función de verificación los extrae, hashea la contraseña candidata con los mismos parámetros y compara en tiempo constante.
Debo usar bcrypt o Argon2?
Ambos son excelentes opciones. bcrypt esta probado durante mas de 25 anos. Argon2 es mas nuevo y resistente a memoria. Para nuevos proyectos, Argon2id es recomendado. bcrypt sigue siendo seguro con factor de costo 10 o superior.