Generador de bcrypt: crea y verifica hashes de contraseñas con bcrypt

Genera el hash bcrypt de una contraseña con el coste que elijas, comprueba una contraseña con un hash bcrypt y descubre qué significa cada parte del hash.

Generar un hash bcrypt

28 de 72 bytes (UTF-8).
Cada paso duplica el tiempo. 10–12 es el rango habitual para hashes de inicio de sesión.

Verificar una contraseña con un hash

Anatomía del hash
Versión$2b$2b: corrección de OpenBSD de 2014 para contraseñas de más de 255 bytes. Versión predeterminada actual en bcrypt (C/Python/Node).
Coste102^10 = 1024 rondas de expansión de clave
SaltO.0JDwgDTALNNPsTWXP1YO22 caracteres = 128 bits aleatorios, Base64 de bcrypt
Hash2o9FuEFCZZMBsOKg910t7.RrUqVQsmW31 caracteres = 184 bits de la salida de 192 bits

Las contraseñas se procesan y comprueban en tu navegador con bcryptjs. No se envía, almacena ni registra nada. Aun así, evita pegar una contraseña real de producción en cualquier página web. Ver todas las herramientas gratis.

¿Encontraste un problema o algo que podría mejorar? Leemos todos los mensajes y lo arreglamos rápido.

Este generador de bcrypt crea el hash de una contraseña con bcrypt con un factor de coste de 4 a 15, verifica una contraseña con un hash bcrypt existente y descompone un hash en su versión, coste, salt y resumen. Es útil para crear un usuario de prueba, comprobar durante una migración que un hash de tu base de datos corresponde a una contraseña conocida o entender qué significa realmente $2b$12$. El hash se calcula en tu navegador con bcryptjs, una implementación en JavaScript compatible con las bibliotecas bcrypt de Node.js, PHP, Python, Ruby y Go. Para crear varias cuentas de prueba, el modo por lotes genera el hash de una lista de hasta 50 contraseñas de una vez.

Bcrypt es lento a propósito, y cada punto más de coste duplica el tiempo. La herramienta muestra el progreso mientras trabaja y estima cuánto tardarían otros factores de coste en tu dispositivo, para que veas el equilibrio antes de elegir uno para un servidor. Una advertencia que vale para cualquier herramienta online: no pegues una contraseña real de producción en una página web que no controlas. Úsala para valores de prueba y para entender los hashes.

Cómo usarla

  1. Escribe una contraseña y elige un factor de coste; entre 10 y 12 es lo habitual en sistemas de inicio de sesión.
  2. Pulsa Generar hash. Mientras se calcula aparece una barra de progreso; con coste 14 o 15 puede tardar varios segundos.
  3. Copia el hash de 60 caracteres. Si lo generas de nuevo obtendrás un hash distinto porque el salt es aleatorio; los dos se verifican.
  4. Para comprobar un hash, pégalo en la sección de verificación junto con la contraseña candidata y pulsa Verificar.
  5. Consulta la tabla de anatomía del hash para ver qué versión y qué coste usa.

Preguntas frecuentes

¿Puedo aplicar bcrypt a varias contraseñas a la vez?

Sí. Cambia a “Lista de contraseñas (por lotes)”, pega hasta 50 contraseñas, una por línea (los espacios cuentan; las líneas vacías se omiten), y pulsa Generar. Se procesan una tras otra con el coste que elegiste, cada una con su propio salt aleatorio, y la página sigue respondiendo mientras trabaja. Copia los hashes en el mismo orden que tu lista o descarga un CSV, con o sin las contraseñas en claro. El límite existe porque bcrypt es lento a propósito: 50 hashes con coste 12 ya tardan un rato.

¿Qué factor de coste debo usar con bcrypt?

Elige el coste más alto que mantenga un único hash con un retraso tolerable en tu servidor de producción, normalmente entre 100 ms y 1 segundo. En el hardware de servidor actual suele ser entre 10 y 12. La Password Storage Cheat Sheet de OWASP fija un factor de trabajo mínimo de 10. Mide en el servidor real y no en un portátil, y recuerda que un coste alto también facilita saturar tu endpoint de inicio de sesión con peticiones.

¿Por qué la misma contraseña da un hash bcrypt distinto cada vez?

Cada hash incluye un salt aleatorio nuevo de 128 bits, guardado en el propio hash (los 22 caracteres que siguen al coste). Es intencionado: dos usuarios con la misma contraseña obtienen hashes distintos, y las tablas precalculadas no sirven de nada. Para comprobar una contraseña, bcrypt lee el salt y el coste del hash guardado, vuelve a calcular el hash de la candidata con ellos y compara.

¿Se puede descifrar un hash bcrypt?

No. Bcrypt es un hash unidireccional, no un cifrado. La única forma de recuperar una contraseña a partir de un hash bcrypt es probar candidatas y calcular el hash de cada una, y el factor de coste hace que cada intento sea caro. Ese es su propósito: una contraseña débil se puede seguir adivinando, pero cada intento consume tiempo real de CPU en lugar de nanosegundos.

¿Qué diferencia hay entre $2a$, $2b$ y $2y$?

Indican revisiones de la implementación del algoritmo. $2a$ fue la versión durante mucho tiempo; $2b$ la introdujo OpenBSD en 2014 para corregir el tratamiento de las contraseñas de más de 255 bytes; $2y$ es la marca de PHP para los hashes generados después de corregir un error de extensión de signo en 2011. Los hashes creados con las bibliotecas actuales se verifican igual, y la mayoría de las bibliotecas aceptan los tres.

¿Hay una longitud máxima de contraseña en bcrypt?

Sí. Bcrypt usa solo los primeros 72 bytes de la contraseña e ignora el resto, y la cuenta es en bytes UTF-8, así que una contraseña con letras acentuadas o emojis llega al límite con menos caracteres. Esta herramienta avisa cuando pasas de 72 bytes. Si necesitas aceptar frases de contraseña más largas, limita su longitud o usa Argon2id, que no tiene ese límite.

¿Uso bcrypt o Argon2?

Para un sistema nuevo, OWASP recomienda primero Argon2id, porque exige mucha memoria y por eso es más caro de atacar con GPU. Bcrypt sigue siendo una opción sólida compatible con todo, y un sistema que ya usa bcrypt con un coste de 10 o más no necesita cambiar con urgencia. Lo que más importa es usar uno de estos algoritmos lentos y con salt, y no un simple SHA-256 o MD5.

Anatomía de un hash bcrypt

Un hash bcrypt como $2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW tiene siempre 60 caracteres y contiene todo lo necesario para verificarlo:

• $2b$: la versión del algoritmo.

• 12$: el factor de coste. La preparación de la clave se ejecuta 2^12 = 4096 veces.

• R9h/cIPz0gi.URNNX3kh2O: 22 caracteres que codifican el salt aleatorio de 128 bits.

• PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW: 31 caracteres que codifican 184 bits del resultado.

La codificación usa el alfabeto Base64 propio de bcrypt (./A–Z a–z 0–9), que no es el alfabeto Base64 estándar, así que las partes no se pueden decodificar con un decodificador Base64 normal.

Por qué los hashes rápidos no sirven para contraseñas

Los hashes de uso general como SHA-256 están diseñados para ser rápidos, y una GPU moderna calcula miles de millones por segundo. Si se filtra una base de datos de hashes SHA-256 de contraseñas, todas las contraseñas comunes y la mayoría de las cortas caen en cuestión de horas. Añadir un salt evita las tablas precalculadas, pero no ralentiza los intentos.

Bcrypt lo resuelve haciendo que cada hash sea deliberadamente caro y ajustable. Con coste 12, un hash tarda del orden de un cuarto de segundo en un núcleo de servidor típico, alrededor de un millón de veces más que un solo SHA-256 en el mismo núcleo, y su patrón de acceso a memoria hace además que rinda mal en GPU. A medida que el hardware se vuelve más rápido, subes el coste; los hashes existentes se pueden actualizar la próxima vez que cada usuario inicie sesión.

El hash es solo una capa. Limita los intentos de inicio de sesión, comprueba las contraseñas nuevas con listas de contraseñas filtradas como recomienda NIST SP 800-63B y ofrece autenticación en dos pasos para que una contraseña adivinada no baste por sí sola.

Herramientas gratis relacionadas

  • Generador de contraseñas — Genera una contraseña aleatoria segura, una frase de contraseña fácil de recordar o un PIN. Funciona por completo en tu navegador: no se envía ni se guarda nada.
  • Generador de hash — Calcula el hash de textos o archivos con MD5, SHA-1, SHA-256, SHA-384, SHA-512 y CRC32, verifica una suma de comprobación o calcula un HMAC. Los archivos nunca salen de tu dispositivo.
  • Generador TOTP — Convierte un secreto Base32 en códigos 2FA en vivo con cuenta atrás, crea un código QR otpauth:// para apps de autenticación o lee una URI existente.
  • Decodificador de JWT — Decodifica la cabecera y el payload de un JWT, lee la caducidad en lenguaje claro, verifica firmas HS, RS, PS y ES o firma un token nuevo. Nada sale de tu navegador.