RH
Tool

Generador Bcrypt

Genera y verifica hashes de contraseñas con Bcrypt

Client-side processing

Generar Hash


Verificar Hash

Acerca de Bcrypt

Bcrypt es una función de hashing diseñada para contraseñas. Incorpora un salt automático y un factor de coste configurable que lo hace resistente a ataques de fuerza bruta. A mayor número de rounds, más seguro pero más lento.

Nota: Esta implementación usa PBKDF2 como alternativa compatible en el navegador. Para producción, usa bcrypt en el servidor.

Info

Generador de Hash Bcrypt Online - Cifrar y Verificar Contraseñas

¿Por qué bcrypt es el estándar para almacenar contraseñas?

Bcrypt es un algoritmo de hashing diseñado específicamente para contraseñas, creado en 1999 basándose en el cifrado Blowfish. A diferencia de algoritmos de propósito general como MD5 o SHA, bcrypt incorpora tres características críticas: salt automático (datos aleatorios añadidos a cada contraseña, haciendo que contraseñas idénticas generen hashes diferentes), factor de coste ajustable (permite aumentar el tiempo de cómputo según mejora el hardware), y lentitud intencional (diseñado para ser computacionalmente costoso, frustrando ataques de fuerza bruta). Mientras MD5 puede calcular billones de hashes por segundo, bcrypt con factor 12 limita a miles, haciendo inviables los ataques masivos.

Entendiendo el factor de coste (work factor)

El factor de coste en bcrypt (también llamado rounds o cost factor) determina cuántas iteraciones realiza el algoritmo, en potencia de 2. Un factor de 10 significa 2^10 = 1024 iteraciones; factor 12 = 4096 iteraciones. Cada incremento duplica el tiempo de cómputo. En hardware moderno (2024): factor 10 toma ~100ms, factor 12 ~300ms, factor 14 ~1 segundo. Para aplicaciones web, 10-12 es típico (balance entre seguridad y UX). Para almacenamiento de datos muy sensibles, 14+. El hash resultante incluye el factor usado, permitiendo verificación futura incluso si cambias el factor para nuevos hashes.

Anatomía de un hash bcrypt y su verificación

Un hash bcrypt tiene formato: $2a$12$N9qo8uLOickgx2ZMRZoMy.MSwVX5n2j5XcZ8vNJr3zK3cF7aXvLm. Desglosado: $2a$ indica versión del algoritmo (2a, 2b, 2y son comunes), $12$ es el factor de coste, los siguientes 22 caracteres son el salt en Base64, y los 31 restantes son el hash propiamente. Para verificar, no necesitas extraer el salt manualmente: bcrypt lo lee del hash almacenado, aplica el mismo proceso a la contraseña introducida, y compara. Por eso nunca debes comparar hashes directamente string vs string; usa siempre la función de verificación que implementa comparación en tiempo constante para evitar ataques de timing.

Preguntas frecuentes

¿Puedo descifrar o revertir un hash bcrypt?

No. Los hashes criptográficos son funciones unidireccionales por diseño. No existe "descifrado" de bcrypt. La única forma de encontrar la contraseña original es probar todas las posibilidades (fuerza bruta) o usar diccionarios de contraseñas comunes. Bcrypt está diseñado para hacer este proceso extremadamente lento. Si olvidaste una contraseña, la única opción es resetearla.

¿Por qué el mismo texto genera hashes diferentes cada vez?

Bcrypt genera un salt aleatorio de 16 bytes para cada hash. Este salt se incorpora al resultado final, haciendo que incluso la misma contraseña produzca hashes completamente diferentes. Esto previene ataques con rainbow tables (bases de datos de hashes precalculados) y oculta si dos usuarios tienen la misma contraseña.

¿Bcrypt, Argon2 o scrypt? ¿Cuál debo usar?

Bcrypt es probado, ampliamente soportado y suficiente para la mayoría de casos. Argon2 (ganador de Password Hashing Competition 2015) es técnicamente superior: resiste mejor ataques con GPUs/ASICs y permite configurar memoria además de tiempo. Scrypt también usa memoria intensiva. Para nuevos proyectos, Argon2id es la recomendación moderna. Para sistemas existentes con bcrypt, no hay urgencia de migrar.

¿Debo añadir pepper además del salt de bcrypt?

El pepper es un valor secreto adicional (almacenado separadamente, no en la base de datos) que se concatena a la contraseña antes del hash. Añade defensa en profundidad: si roban la DB pero no el pepper, los hashes son inútiles. Es una capa extra recomendada para aplicaciones de alta seguridad, pero bcrypt con salt ya es seguro para la mayoría de casos.

© 2026
Roberto Hernando
|