Generador de hash bcrypt, Argon2 y PBKDF2
Escribe una contraseña, elige el algoritmo de tu sistema y copia el hash que tienes que guardar. También puedes comprobar si una contraseña coincide con un hash. Gratis y privado.
Se procesa en tu navegador. No se guarda ni se envía. ¿Aún no tienes la contraseña? Genera una contraseña segura primero
El más extendido para guardar contraseñas. Da una cadena de 60 caracteres que empieza por $2b$ y que casi cualquier sistema sabe comprobar.
1024 rondas. Cada punto más duplica el tiempo que tarda.
Los tres son el mismo algoritmo; elige el que escribe tu sistema. $2b$: Node.js (bcrypt), Python y OpenBSD.
Tu hash
Guárdalo entero y tal cual: el algoritmo, los valores y la sal van dentro de la cadena.
Cómo comprobarlo en tu sistema
- Node.js
await bcrypt.compare(password, hash) - PHP
password_verify($password, $hash) - Python
bcrypt.checkpw(password.encode(), hash.encode()) - Spring
new BCryptPasswordEncoder().matches(password, hash)
Generar la sentencia SQL (opcional)
Escribe dónde se guarda la contraseña y copia el UPDATE ya con el hash dentro.
Escribe los nombres tal como aparecen en tu base de datos: se entrecomillan según la base elegida.
Sentencia SQL
Genera primero un hash para incluirlo en la sentencia.
Antes de ejecutarla, comprueba que estás conectado a la base de datos correcta y que la condición solo afecta a un usuario.
Si la usas dentro de un comando de terminal, ponla entre comillas simples: si no, el shell interpreta los $ del hash.
Tus contraseñas y tus hashes no salen de tu dispositivoTodo se calcula en tu navegador. Nunca enviamos ni guardamos la contraseña ni el hash.
Cómo funciona
- Escribe la contraseña y elige el algoritmo que usa tu sistema: bcrypt para casi todo, Argon2id, PBKDF2 para Django o scrypt para Flask. Ajusta el coste si lo necesitas.
- Pulsa «Generar hash». Los hashes son lentos a propósito, pero la página sigue respondiendo mientras se calculan.
- Copia el hash y guárdalo en tu base de datos. Si quieres, genera también la sentencia SQL UPDATE ya preparada.
Herramientas relacionadas
Generador de contraseñas
Crea contraseñas seguras, frases fáciles de recordar y tokens aleatorios sin salir de tu navegador.
Unir PDF
Combina varios PDF en un solo documento y ordénalos como quieras.
Imagen a PDF
Convierte tus fotos e imágenes en un documento PDF.
MOV a MP4
Convierte vídeos MOV, como los del iPhone, a MP4 sin salir del navegador.
Preguntas frecuentes
¿Qué es bcrypt y para qué sirve?
bcrypt es un algoritmo para guardar contraseñas. Lo que se guarda no es la contraseña sino su hash: una cadena de 60 caracteres que se calcula despacio a propósito y con una sal aleatoria, para que probar millones de contraseñas cueste mucho. Cuando alguien inicia sesión, el sistema calcula el hash de lo que escribe con la misma sal y el mismo coste, y lo compara con el guardado.
¿Qué coste (cost) de bcrypt debo usar?
OWASP recomienda 10 como mínimo, y más si tu servidor lo aguanta. El coste es un exponente: cada punto más duplica el tiempo, y 10 equivale a 1.024 rondas. PHP subió su valor por defecto de 10 a 12 en la versión 8.4. Elige el más alto con el que el inicio de sesión siga siendo ágil en tu servidor y, si cambias la contraseña de un usuario en un sistema que ya existe, usa el mismo coste que ese sistema para que todos los hashes se comporten igual.
¿Qué diferencia hay entre $2a$, $2b$ y $2y$?
En la práctica, ninguna: son versiones del mismo algoritmo. $2a$ es la original; después aparecieron $2y$ (la marca de PHP para su implementación corregida) y $2b$ (la de OpenBSD, desde 2014, que arregló un fallo con contraseñas muy largas). Con contraseñas de hasta 72 bytes una implementación correcta da el mismo resultado con los tres, y las bibliotecas actuales aceptan los tres. Elige el que escribe tu sistema: $2b$ en Node.js y Python, $2y$ en PHP y Laravel, $2a$ en Spring Security.
¿Qué es mejor: bcrypt, Argon2 o PBKDF2?
Argon2id es la primera opción de OWASP para sistemas nuevos: además de lento, gasta mucha memoria, lo que lo hace más caro de atacar con tarjetas gráficas. bcrypt sigue siendo una buena elección y es el que soporta casi cualquier lenguaje, aunque solo lee los primeros 72 bytes de la contraseña. PBKDF2 es el más sencillo y el que piden algunos estándares, pero necesita muchas iteraciones (OWASP indica 600.000 con SHA-256). En la práctica, usa el que tu sistema ya sabe comprobar: un hash que tu aplicación no entiende no te sirve.
¿Por qué el hash cambia cada vez que lo genero?
Porque cada hash lleva dentro una sal aleatoria nueva. Todos son válidos para la misma contraseña: el sistema lee la sal del hash guardado, vuelve a calcular y compara. La sal hace que dos usuarios con la misma contraseña no tengan el mismo hash y que no sirvan las tablas de hashes precalculados.
¿Se puede revertir un hash para recuperar la contraseña?
No. Un hash de contraseñas solo funciona en un sentido. Lo único que se puede hacer es probar contraseñas una a una y comparar, y por eso estos algoritmos son lentos. Si has perdido una contraseña, lo correcto es sustituirla por otra. Y si quieres saber si una contraseña concreta corresponde a un hash, usa la pestaña «Verificar hash».
¿Es seguro generar aquí el hash de una contraseña real?
El hash se calcula en tu navegador, en un hilo aparte de la página, y la contraseña no se envía a nuestros servidores ni se guarda en ningún sitio: ni en cookies, ni en el almacenamiento del navegador, ni en la dirección de la página. Al cerrar o recargar la página desaparece. Lo único que medimos, de forma anónima, es qué algoritmo se usa, nunca la contraseña ni el hash. Aun así, hazlo en un dispositivo y un navegador de confianza, y si vas a cambiar la contraseña de otra persona, lo ideal es poner una temporal que tenga que cambiar al entrar.
¿Qué es el límite de 72 bytes de bcrypt?
bcrypt solo lee los primeros 72 bytes de la contraseña e ignora el resto, así que dos contraseñas que coincidan en esos 72 bytes dan el mismo hash. No son 72 caracteres sino bytes en UTF-8: una «ñ» ocupa 2 y un emoji 4. La herramienta te avisa cuando te pasas y calcula el hash con los primeros 72 bytes, como hacen las bibliotecas reales. Para contraseñas largas, usa Argon2id o PBKDF2, que no tienen ese límite.
¿Cómo cambio la contraseña de un usuario en la base de datos?
Genera el hash con el mismo algoritmo y los mismos valores que usa tu sistema (mira el hash de un usuario existente: su prefijo y su coste lo dicen). Después abre «Generar la sentencia SQL», escribe la tabla, la columna y la condición, y copia el UPDATE. Antes de ejecutarlo, comprueba que estás conectado a la base de datos correcta, que la condición afecta a un solo usuario y, mejor aún, hazlo dentro de una transacción. Algunos sistemas añaden pasos propios, como una pimienta o un prehash de la contraseña, y entonces este hash no servirá. Si ejecutas el SQL desde una terminal, ponlo entre comillas simples para que el shell no interprete los $ del hash.
¿Cómo genero un hash para Django o para Flask?
Para Django elige «PBKDF2-SHA256 (Django)»: el resultado tiene el formato pbkdf2_sha256$iteraciones$sal$hash que Django guarda en la columna password. Django acepta hashes con menos iteraciones que su valor actual y los actualiza en el siguiente inicio de sesión del usuario. Para Flask elige «scrypt (Werkzeug / Flask)», que es el formato por defecto de generate_password_hash.
¿Puedo comprobar si una contraseña coincide con un hash?
Sí, en la pestaña «Verificar hash»: pega el hash y escribe la contraseña. La herramienta reconoce el algoritmo por el principio del hash (bcrypt, Argon2, PBKDF2 de Django o scrypt de Werkzeug) y te dice si coincide. Los hashes de otros formatos, como MD5 o SHA-1 sin sal, no se admiten.