En detalle
bcrypt aplica un hash a la contraseña con una sal aleatoria y repite un costoso paso de configuración de clave 2 elevado al factor de coste veces. Un hash tiene el aspecto $2b$12$ seguido de una sal de 22 caracteres y el hash, 60 caracteres en total; el 12 es el coste, es decir, 4096 rondas. Subir el coste en uno duplica el trabajo, lo que permite a los defensores seguir el ritmo del hardware más rápido. El algoritmo solo lee los primeros 72 bytes de una contraseña.
Por qué importa
Los hashes de propósito general, como SHA-256, están diseñados para ser rápidos, lo que ayuda a los atacantes que prueban miles de millones de intentos por segundo contra una base de datos robada. La lentitud de bcrypt y su sal integrada encarecen cada intento e impiden que contraseñas idénticas produzcan hashes idénticos. Es una de las opciones estándar para almacenar contraseñas, junto con funciones más recientes como scrypt y Argon2.
Ejemplo
Crea y verifica hashes bcrypt con el generador Bcrypt. Aplicar el hash a la misma contraseña dos veces produce dos cadenas distintas, porque cada una tiene su propia sal, y aun así ambas se verifican correctamente.
Confusión habitual
bcrypt es una función de hash de contraseñas, no un método de cifrado: no se puede revertir. Tampoco sustituye a una contraseña larga y única, porque una contraseña débil se adivina rápido incluso con un coste alto.