Skip to main content
CheckTown
Dev Tools

bcrypt: Como funciona el hash de contrasenas

Publicado 7 min de lectura
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.

Herramientas relacionadas