🛡️

Bcrypt

Bcrypt es un algoritmo de hash de contraseñas basado en el cifrado Blowfish, diseñado en 1999 por Niels Provos y David Mazières. Su característica clave es el factor de costo configurable que lo hace intencionalmente lento, protegiendo contra ataques de fuerza bruta incluso si la base de datos es comprometida.

Ejemplos

  • $2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewY5NU7eBh6pTMG. (hash completo)
  • Cost factor 10 → ~65ms | Cost 12 → ~250ms | Cost 14 → ~1000ms
  • bcrypt('password123', 12) → diferente cada vez por el salt aleatorio

Preguntas frecuentes

¿Por qué bcrypt genera hashes diferentes para la misma password?

Porque cada hash incluye un salt aleatorio único. Esto evita rainbow tables y hace que dos usuarios con la misma password tengan hashes distintos. La verificación funciona porque el salt está incluido en el hash.

¿Qué cost factor debo usar en bcrypt?

En 2024, el recomendado es 12-14. Cost 12 toma ~250ms, aceptable para login pero costoso para atacantes. Aumentá el cost cada 2-3 años para compensar hardware más rápido.

¿Puedo migrar de MD5 a bcrypt sin resetear passwords?

Sí. Una estrategia común es bcrypt(md5_hash_existente) para usuarios existentes, y bcrypt(password) en el próximo login. Esto evita forzar reset masivo de passwords.