Skip to main content
CheckTown
Herramientas dev

bcrypt: Como funciona el hash de contraseñas

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

Herramientas relacionadas