Generador y verificador de hash Bcrypt
Convierte una contraseña en un hash bcrypt $2b$, o comprueba una contraseña frente a un hash que ya tengas. El hashing se ejecuta en un Web Worker dentro de tu navegador — nada de lo que escribes se envía a ningún sitio.
No pegues una contraseña real de producción en ninguna herramienta online, esta incluida.
Entrada
Contraseña y coste
Se genera una sal nueva de 16 bytes para cada hash, así que la misma contraseña da un hash distinto cada vez. Ese es el propósito de la sal, no un error.
Un coste de 10 significa 2^10 = 1,024 rondas de configuración de clave. Cada paso hacia arriba duplica el trabajo, tanto para quien esté probando un archivo de contraseñas robado como para tu propio servidor en cada inicio de sesión. La mayoría de los sistemas en producción se sitúan entre 10 y 12.
Los tres prefijos producen los mismos bytes de hash para contraseñas de menos de 72 bytes; solo cambia la etiqueta. El crypt() integrado de PHP no reconoce $2b$, así que un hash $2b$ hará fallar password_verify() sin avisar. Elige $2y$ para PHP.
El hashing se ejecuta en un Web Worker dentro de esta pestaña. La contraseña nunca se envía a Wespner ni a nadie más — no hay ninguna petición que la envíe.
Resultado
hash bcrypt
Pulsa «Generar hash».
Coste, medido aquí
Lo que te cuesta este ajuste
Estimación: se cronometra un hash en esta pestaña con coste 8, y el resto de costes se extrapolan duplicando ese valor. Tu propio hardware y navegador deciden el número final.
Esas cifras corresponden a un único hilo de JavaScript. Un atacante real ejecuta código nativo en un rack de GPU y es órdenes de magnitud más rápido — esa diferencia es exactamente la razón por la que el factor de coste debe ser incómodo, no cómodo. El mismo control también decide cuánta CPU consume cada uno de tus propios inicios de sesión.
Cómo leer la cadena
Qué significan los 60 caracteres
$2b$12$LQv3c1yqBWVHxkd0LHAkCOYUtYgBuLIjrsGrDUgYqZbY7d0RfPbtq
Ambos bloques usan el alfabeto base64 propio de bcrypt, que empieza por ./ y deja los dígitos al final — no es base64 estándar, y decodificarlo como si lo fuera da bytes incorrectos. Eso, junto con la división 22/31, es una forma rápida de comprobar que una cadena es realmente un hash bcrypt y no algo que solo se le parece.
Elegir un algoritmo
¿bcrypt, scrypt o Argon2?
Esta herramienta es solo para bcrypt, a propósito. Aquí tienes cuándo es la respuesta correcta y cuándo no.
Lento por diseño, pero solo depende del tiempo de CPU y de una memoria fija de 4 KB. Las GPU y FPGA lo paralelizan mucho mejor que a los diseños más recientes. Sigue siendo una opción perfectamente respetable, está soportado literalmente en todas partes, y su límite de 72 bytes de contraseña es su sorpresa más incómoda.
Añade un coste de memoria ajustable, así que un atacante necesita RAM por cada intento, no solo núcleos. Más difícil de paralelizar barato que bcrypt.
Ganador de la Password Hashing Competition de 2015 y lo que OWASP recomienda ahora para sistemas nuevos: controles independientes de tiempo, memoria y paralelismo, con la variante id resistente tanto a ataques por GPU como por canal lateral. Si empiezas de cero y tu plataforma lo soporta, úsalo. Si mantienes algo que ya almacena hashes $2y$, bcrypt con un coste razonable no es una emergencia — mejor rehashea en el siguiente inicio de sesión.
Prueba
Comprueba esta página frente a los vectores de prueba publicados
Una herramienta de hashing que pide confianza debería poder comprobarse. Estos son los vectores de referencia de bcrypt usados por las implementaciones derivadas de OpenBSD; la página recalcula cada uno a partir de su propia sal y compara carácter a carácter, y además genera y reverifica una contraseña desechable con dos factores de coste.
El lote ejecuta 6 vectores publicados más dos idas y vueltas.
¿Tienes tu propio servidor de juegos?
Servidores de juegos Wespner con protección DDoS, discos NVMe y activación en pocos minutos.