Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 105

bcrypt

Revisado porCybersecurity entrepreneur & security researcher

¿Qué es bcrypt?

bcryptFunción adaptable de hashing de contraseñas basada en el cifrado Blowfish con un factor de coste ajustable, diseñada por Provos y Mazières en 1999.


bcrypt es un esquema de hashing de contraseñas publicado en 1999 por Niels Provos y David Mazières (artículo de USENIX "A Future-Adaptable Password Scheme") que utiliza una variante del key schedule de Blowfish ("EksBlowfish") para derivar un hash de 192 bits a partir de una contraseña con sal. La costosa fase de configuración de clave entrelaza la sal y la contraseña mediante expansiones de clave repetidas, y luego cifra 64 veces la cadena constante "OrpheanBeholderScryDoubt". Su parámetro de coste — el log2 del número de rondas de configuración de clave — permite a los defensores elevar el factor de trabajo a medida que mejora el hardware; un coste de 12 significa 2^12 = 4096 iteraciones.

Una peculiaridad definitoria es el límite estricto de 72 bytes de entrada de bcrypt: todo lo que supere el byte 72 se trunca silenciosamente. Esto provocó el incidente de octubre de 2024 en la Autenticación Delegada AD/LDAP de Okta, donde Okta construía una clave de caché aplicando bcrypt a userId + username + password; para usuarios con un nombre de usuario de 52 o más caracteres, la contraseña quedaba más allá del corte de 72 bytes y se ignoraba, permitiendo que una credencial previamente cacheada autenticara. La lección: pre-hashear las entradas largas (por ejemplo, SHA-256 y luego Base64) antes de bcrypt, o usar una función sin ese límite.

El consumo de memoria pequeño y fijo de bcrypt también lo hace más débil que los diseños de coste en memoria frente al cracking con GPU/ASIC. Sigue siendo aceptable con coste >= 12, pero OWASP recomienda ahora Argon2id (o scrypt) para los nuevos sistemas.

flowchart TD
  P[Password + 128-bit salt] --> T{Input > 72 bytes?}
  T -->|Yes| TR[Bytes 73+ silently truncated]
  T -->|No| K
  TR --> K[EksBlowfish key setup]
  K --> C[Cost: repeat key schedule 2^cost times]
  C --> E["Encrypt 'OrpheanBeholderScryDoubt' x64"]
  E --> H["$2b$12$salt + 184-bit digest"]

Ejemplos

  1. 01

    Django y Spring Security almacenan las contraseñas con bcrypt y coste 12 por defecto.

  2. 02

    Un hash bcrypt típico comienza con $2b$12$ seguido de una sal de 22 caracteres y un resumen de 31 caracteres.

Preguntas frecuentes

¿Qué es bcrypt?

Función adaptable de hashing de contraseñas basada en el cifrado Blowfish con un factor de coste ajustable, diseñada por Provos y Mazières en 1999. Pertenece a la categoría de Criptografía en ciberseguridad.

¿Qué significa bcrypt?

Función adaptable de hashing de contraseñas basada en el cifrado Blowfish con un factor de coste ajustable, diseñada por Provos y Mazières en 1999.

¿Cómo defenderse de bcrypt?

Las defensas contra bcrypt combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.

¿Cuáles son otros nombres para bcrypt?

Nombres alternativos comunes: Hash EksBlowfish, bcrypt de Provos-Mazières.

Términos relacionados

Véase también