Con este generador de hash Bcrypt gratuito puedes cifrar cualquier contraseña o texto de forma segura directamente en tu navegador. Solo escribe la contraseña, elige el número de rondas y obtén tu hash al instante. También incluye un verificador para comprobar si una contraseña corresponde a un hash existente. Sin registro, sin límites y sin enviar nada a ningún servidor.
Es la herramienta ideal para desarrolladores, programadores y administradores de sistemas que necesitan generar hashes de prueba, verificar contraseñas o entender cómo funciona el algoritmo Bcrypt sin montar un entorno local.
¿Qué es Bcrypt?
Bcrypt es un algoritmo de hashing diseñado específicamente para contraseñas. Fue creado en 1999 por Niels Provos y David Mazières basándose en el cifrado Blowfish, y hoy sigue siendo uno de los métodos más recomendados por expertos en seguridad para almacenar contraseñas de forma segura.
A diferencia de otros algoritmos como MD5 o SHA-1, que fueron diseñados para ser rápidos, Bcrypt fue diseñado deliberadamente para ser lento y costoso computacionalmente. Eso puede parecer una desventaja, pero es exactamente lo que lo hace seguro: un atacante que intente adivinar contraseñas por fuerza bruta tendrá que invertir mucho más tiempo y recursos.
¿Cómo funciona Bcrypt?
Bcrypt combina tres elementos para generar el hash final:
- La contraseña que quieres proteger (máximo 72 bytes).
- Un salt aleatorio de 128 bits que se genera automáticamente cada vez. Esto garantiza que dos contraseñas idénticas produzcan hashes completamente distintos.
- El cost factor o número de rondas, que determina cuántas veces se ejecuta el algoritmo internamente. Cada incremento de una ronda duplica el tiempo de cómputo.
El resultado es siempre una cadena de exactamente 60 caracteres con este formato: $2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy
Anatomía de un hash Bcrypt
Cada hash Bcrypt tiene una estructura fija que puedes leer directamente:
| Parte | Ejemplo | Significado |
|---|---|---|
| Versión | $2a$ | Variante del algoritmo Bcrypt |
| Rondas | 10$ | Cost factor (número de iteraciones) |
| Salt | Primeros 22 caracteres | Valor aleatorio único para este hash |
| Hash | Últimos 31 caracteres | Resultado del cifrado |
¿Cuántas rondas debo usar?
El número de rondas es el parámetro más importante a la hora de configurar Bcrypt. Aquí tienes una guía práctica:
| Rondas | Tiempo aproximado | Uso recomendado |
|---|---|---|
| 4 – 6 | Menos de 5 ms | Solo para pruebas y desarrollo |
| 8 – 9 | 20 – 50 ms | Aplicaciones con tráfico muy alto |
| 10 | ~100 ms | Estándar recomendado para la mayoría de aplicaciones |
| 11 – 12 | 200 – 400 ms | Aplicaciones con datos sensibles (banca, salud) |
| 13 – 14 | 800 ms – 1.5 s | Máxima seguridad, bajo tráfico |
La recomendación general de OWASP es usar un mínimo de 10 rondas para nuevas aplicaciones. Si tu hardware es más moderno, puedes subir a 12 sin impacto notable en la experiencia del usuario.
¿Por qué Bcrypt y no MD5 o SHA-256?
Es una pregunta muy común entre desarrolladores que empiezan con seguridad. La respuesta corta es que MD5 y SHA-256 no fueron diseñados para contraseñas, sino para verificar integridad de archivos y datos. Son tan rápidos que un atacante moderno puede probar miles de millones de combinaciones por segundo usando una GPU.
Bcrypt, en cambio, está diseñado para ser lento. Con 10 rondas en hardware actual, un atacante solo puede probar unos pocos miles de combinaciones por segundo, lo que hace que los ataques de fuerza bruta sean prácticamente inviables para contraseñas razonablemente complejas.
| Algoritmo | Velocidad (GPU moderna) | ¿Recomendado para contraseñas? |
|---|---|---|
| MD5 | ~60.000 millones/segundo | ❌ No |
| SHA-256 | ~22.000 millones/segundo | ❌ No |
| Bcrypt (10 rondas) | ~20.000/segundo | ✅ Sí |
| Argon2id | Variable (ajustable) | ✅ Sí (más moderno) |
Cómo usar Bcrypt en los lenguajes de programación más comunes
Bcrypt está disponible como librería nativa o paquete en prácticamente todos los lenguajes modernos:
- PHP: función
password_hash($pass, PASSWORD_BCRYPT)incluida desde PHP 5.5, sin instalar nada. - Node.js: paquete
bcryptjsobcryptvia npm. Es el más usado en aplicaciones JavaScript del lado del servidor. - Python: librería
bcryptinstalable con pip. También se puede usarpasslibque la envuelve con una API más cómoda. - Java / Spring Boot: clase
BCryptPasswordEncoderincluida en Spring Security. - Ruby on Rails: gema
bcrypt, integrada por defecto enhas_secure_password. - Go: paquete
golang.org/x/crypto/bcryptde la librería estándar extendida.

FAQ
¿Se puede revertir un hash Bcrypt para obtener la contraseña original?
No. Bcrypt es una función de hash unidireccional. Matemáticamente es imposible reconstruir la contraseña original a partir del hash. Por eso no existe un “descifrador” de Bcrypt real: la única forma de atacarlo es por fuerza bruta, probando contraseñas una por una, lo que con un cost factor alto es extremadamente lento.
¿Por qué el mismo texto genera un hash diferente cada vez?
Porque Bcrypt genera un salt aleatorio en cada operación y lo incrusta dentro del propio hash. Esto es una característica de seguridad, no un error: evita que los atacantes usen tablas precalculadas (rainbow tables) para descifrar contraseñas comunes.
¿Mi contraseña se envía al servidor cuando uso esta herramienta?
No. Esta herramienta usa la librería bcryptjs que se ejecuta completamente en tu navegador. Tu contraseña nunca sale de tu dispositivo. Puedes verificarlo desconectando el WiFi y comprobando que la herramienta sigue funcionando.
¿Cuál es la diferencia entre $2a$, $2b$ y $2y$?
Son variantes de la misma especificación Bcrypt. $2b$ es la versión más reciente y recomendada, corrigiendo un bug menor de $2a$. $2y$ es específica de PHP. En la práctica, los tres son interoperables y cualquier librería moderna los acepta sin problemas.
¿Bcrypt tiene algún límite de longitud de contraseña?
Sí. Bcrypt solo procesa los primeros 72 bytes de la contraseña. Para contraseñas en ASCII eso equivale a 72 caracteres, pero con caracteres Unicode (tildes, emojis, caracteres chinos) puede ser menos. Si necesitas soportar contraseñas más largas, la solución habitual es hacer un SHA-256 de la contraseña antes de pasarla a Bcrypt.
