Generador de hash Argon2
Crea hashes de contraseña Argon2id, Argon2i o Argon2d con la memoria, las iteraciones, el paralelismo y la sal que elijas, o comprueba una contraseña con un hash $argon2 existente. Todo se ejecuta en tu dispositivo; la contraseña nunca sale de la página.
Última actualización:
Clave secreta (pepper), opcional
El secreto se mezcla en el hash pero no se guarda en él. Necesitas el mismo secreto para verificar. La mayoría de las bibliotecas de contraseñas no usan ninguno.
Clave secreta (pepper), si el hash usó una
Cómo usar Generador de hash Argon2
- Escribe la contraseña que quieres convertir en hash en la pestaña Generar.
- Elige una variante y un ajuste predefinido: Argon2id con los ajustes de OWASP o RFC 9106 sirve para la mayoría de los inicios de sesión; cambia a Personalizado para definir tú la memoria, las iteraciones y el paralelismo.
- Conserva la sal aleatoria o introduce la tuya como texto, hex o Base64 (al menos 8 bytes).
- Pulsa Generar hash y copia la cadena codificada en tu base de datos, o el hex sin procesar si necesitas una clave derivada.
- Para comprobar una contraseña, abre la pestaña Verificar, pega un hash $argon2, escribe la contraseña y pulsa Verificar contraseña.
Cómo funciona Argon2
Argon2 (RFC 9106) convierte una contraseña y una sal en una etiqueta de longitud fija en tres pasos:
- Hash inicial: la contraseña, la sal, el secreto y los datos asociados opcionales, y todos los parámetros (p, longitud de la etiqueta, m, t, versión, tipo) se procesan con BLAKE2b para obtener una semilla H0 de 64 bytes.
- Llenado de memoria: la memoria se divide en p carriles de bloques de 1 KiB. Cada bloque nuevo se calcula a partir del bloque anterior y de un bloque previo elegido de forma pseudoaleatoria con una función de compresión basada en BLAKE2b. Esto se repite durante t pasadas, así que los m KiB completos deben mantenerse en RAM.
- Finalización: el último bloque de cada carril se combina con XOR y se convierte en hash con la longitud de etiqueta solicitada.
Como cada pasada toca todos los bloques, un atacante que intente ahorrar memoria debe recalcular bloques una y otra vez. Esa compensación es lo que hace que Argon2 sea costoso en GPU y hardware a medida.
Comparación de Argon2id, Argon2i y Argon2d
| Variante | Acceso a memoria | Fortaleza | Úsalo para |
|---|---|---|---|
| Argon2id | Independiente de los datos en la primera mitad de la pasada 1, dependiente de los datos después | Resiste tanto ataques de canal lateral como de compensación con GPU | Hash de contraseñas (la opción por defecto) |
| Argon2i | Siempre independiente de los datos | La mejor resistencia a canal lateral; necesita más pasadas frente a ataques de compensación | Derivación de claves cuando importan las fugas de tiempo |
| Argon2d | Siempre dependiente de los datos | La más fuerte contra el descifrado con GPU, pero filtra información de tiempo | Prueba de trabajo de criptomonedas y sistemas de back-end sin exposición a canales laterales |
Parámetros recomendados
| Fuente | Memoria (m) | Iteraciones (t) | Paralelismo (p) |
|---|---|---|---|
| OWASP Password Storage Cheat Sheet (mínimo) | 19 MiB (19,456 KiB) | 2 | 1 |
| Alternativa de OWASP | 46 MiB (47,104 KiB) | 1 | 1 |
| Primera recomendación del RFC 9106 | 2 GiB | 1 | 4 |
| Segunda recomendación del RFC 9106 | 64 MiB (65,536 KiB) | 3 | 4 |
Usa una sal aleatoria de 16 bytes y una etiqueta de 32 bytes. La memoria es el parámetro que más perjudica a los atacantes, así que súbela primero y luego añade iteraciones hasta que un hash tarde entre 0.1 y 0.5 segundos aproximadamente en tu servidor. Los tiempos del navegador que muestra esta herramienta son solo orientativos: los servidores con bibliotecas nativas suelen ser más rápidos.
Cómo leer un hash Argon2 codificado
Ejemplo: $argon2id$v=19$m=65536,t=2,p=1$c29tZXNhbHQ$CTFhFdXPJO1aFaMaO6Mm5c8y7cJHAph8ArZWb2GRPPc es la contraseña password con la sal somesalt. Pulsa Cargar ejemplo en la pestaña Verificar para comprobarlo.
| Parte | Ejemplo | Significado |
|---|---|---|
| Variante | $argon2id | argon2id, argon2i o argon2d |
| Versión | $v=19 | 19 = 0x13 = Argon2 1.3 (si falta, es la antigua 1.0) |
| Parámetros | $m=65536,t=2,p=1 | Memoria en KiB, iteraciones, carriles |
| Sal | $c29tZXNhbHQ | Base64 sin relleno |
| Hash | $CTFhFdXPJO1a… | La etiqueta, en Base64 sin relleno |
Preguntas frecuentes
¿Qué es Argon2?
Argon2 es la función de hash de contraseñas que ganó la Password Hashing Competition en 2015 y está estandarizada en el RFC 9106. Es lenta a propósito y exigente en memoria: cada hash debe llenar una cantidad configurable de RAM, lo que encarece los ataques de adivinación a gran escala con GPU y ASIC.
¿Qué variante de Argon2 debo usar?
Usa Argon2id. Ejecuta la primera mitad de la primera pasada con acceso a memoria independiente de los datos (como Argon2i, resistente a ataques de canal lateral) y el resto con acceso dependiente de los datos (como Argon2d, resistente a ataques de compensación con GPU). Tanto el RFC 9106 como OWASP recomiendan Argon2id para contraseñas.
¿Qué parámetros se recomiendan?
La Password Storage Cheat Sheet de OWASP sugiere Argon2id con al menos 19 MiB de memoria, 2 iteraciones y paralelismo 1 (o compensaciones equivalentes como 46 MiB con 1 iteración). El RFC 9106 recomienda 2 GiB, 1 iteración y 4 carriles si la memoria lo permite, o 64 MiB, 3 iteraciones y 4 carriles en caso contrario. Ajústalo para que un hash tarde una fracción de segundo en tu servidor.
¿Por qué la misma contraseña da un hash distinto cada vez?
Se genera una sal aleatoria nueva para cada hash y se guarda dentro de la cadena codificada. Así, contraseñas idénticas producen hashes distintos y se neutralizan las tablas precalculadas. La verificación vuelve a leer la sal y los parámetros del hash guardado.
¿Qué significa el hash codificado $argon2id$v=19$m=65536,t=3,p=4$…?
Es el formato de cadena PHC: la variante, la versión (19 = Argon2 1.3), la memoria en KiB (m), las iteraciones (t), el paralelismo (p) y luego la sal y el hash, ambos en Base64 sin relleno. Bibliotecas como password_hash de PHP, argon2-cffi, argon2 de Node y libsodium leen y escriben este formato.
¿Es seguro escribir aquí una contraseña real?
El hash se calcula por completo en tu navegador. La contraseña y el hash nunca se suben ni se guardan. Para secretos de producción, sigue siendo buena práctica calcular el hash en el servidor que los va a verificar.
¿Se puede descifrar un hash Argon2?
No. Argon2 es una función unidireccional. La única forma de recuperar una contraseña es probar candidatas y calcular el hash de cada una con la sal y los parámetros guardados, algo que Argon2 hace lento y exigente en memoria por diseño.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.