En este artículo
Que es bcrypt?
bcrypt es una funcion de hash de contrasenas adaptativa disenada 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 disenada especificamente para almacenamiento de contrasenas. Su naturaleza adaptativa permite aumentar el factor de costo con el tiempo.
Como funciona bcrypt
Un hash bcrypt contiene toda la informacion necesaria para verificar una contrasena en una sola cadena.
- $2b$ — el identificador de algoritmo para bcrypt version 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 rapido para la experiencia del usuario.
- Costo 10 — hash en ~100ms; buena base para la mayoria 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 contrasenas.
- MD5/SHA-256 — disenados para velocidad; nunca usar para contrasenas
- 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 contrasenas necesitan almacenarse de forma segura.
- Registro de usuario — hashear la contrasena con bcrypt antes de almacenarla
- Verificacion de login — hashear la contrasena enviada y compararla con el hash almacenado
- Migracion de contrasenas — al actualizar de MD5/SHA a bcrypt, rehashear contrasenas en el siguiente login exitoso
Preguntas frecuentes
Puedo cambiar el factor de costo sin resetear contrasenas?
Si. En cada login exitoso, verifique si el hash almacenado usa un factor de costo antiguo. Si es asi, rehashee la contrasena con el nuevo factor. Esto se llama rehashing oportunista.
Como verifico una contrasena contra un hash bcrypt?
La cadena de hash bcrypt contiene la version, factor de costo y sal. La funcion de verificacion los extrae, hashea la contrasena candidata con los mismos parametros 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.