Verificación de hash Argon2 | Compara una contraseña con un hash codificado

Introduce una contraseña y un hash Argon2 codificado ($argon2id$...) para comprobar si coinciden. Se calcula en el navegador; nada se envía al servidor.

Verificar un hash Argon2

Argon2 ganó la Password Hashing Competition en 2015 y es hoy **el hash de contraseñas más recomendado para trabajos nuevos.** Su diferencia principal con bcrypt es que permite ajustar **el uso de memoria además del tiempo de cálculo.** Las GPU y el hardware específico destacan en aritmética paralela pero tienen dificultades para asignar a cada núcleo una porción grande de memoria, de modo que exigir memoria eleva considerablemente el coste de un ataque por fuerza bruta.

Un hash Argon2 adopta la forma `$argon2id$v=19$m=19456,t=2,p=1$sal$resumen`, con **los parámetros y la sal incrustados en la propia cadena.** La verificación no necesita, por tanto, ninguna lista aparte de parámetros: bastan el hash y la contraseña. Esta herramienta realiza esa verificación. **Todo se calcula en su navegador, y ni la contraseña ni el hash que introduzca se envían jamás a un servidor.**

Cómo verificar

  1. Pegue el hash Argon2 Introduzca tal cual la cadena codificada que comienza por `$argon2id$`.
  2. Introduzca la contraseña Escriba la contraseña en texto claro que desea contrastar.
  3. Ejecute la verificación **Como el algoritmo está diseñado para consumir mucha memoria, esto puede tardar unos segundos.** Es el comportamiento previsto.
  4. Lea el resultado Se le indica si ambos coinciden.

Consejos para aprovecharla mejor

  • Para verificar, pega directamente el hash codificado (una cadena que empieza por $argon2id$) generado con la herramienta Cálculo de hash Argon2.
  • El hash codificado ya incluye la variante, el coste de memoria, el número de iteraciones y la sal, por lo que no es necesario especificar estos parámetros por separado al verificar.
  • Si el formato del hash no es válido (por ejemplo, por caracteres faltantes o saltos de línea al copiarlo), aparecerá un mensaje de error. Comprueba que has copiado el texto completo correctamente.
  • Si el resultado indica que no coinciden, comprueba que la contraseña no contenga mayúsculas o minúsculas incorrectas ni espacios en blanco añadidos por error al principio o al final.

Situaciones en las que resulta útil

Comprobar una implementación de autenticación

Confirme con un par conocido de hash y contraseña que su propio código de acceso verifica correctamente.

Confirmar una migración

Establezca de antemano si los hashes traídos de otro sistema pueden verificarse tal como están.

Inspeccionar los parámetros elegidos

Lea los valores `m`, `t` y `p` incrustados en la cadena para ver qué coste se configuró.

Cerrar el círculo con el generador

Confirme que un valor producido por el generador de hashes Argon2 se verifica correctamente aquí.

Términos de Argon2 explicados

Argon2id
La variante que combina resistencia a los ataques de canal lateral con resistencia a los ataques por GPU. **Es la elección estándar en trabajos nuevos.**
m (coste de memoria)
La cantidad de memoria empleada, expresada en kibibytes. **Es el parámetro central que hace a Argon2 resistente a los ataques por GPU.**
t (coste de tiempo)
El número de iteraciones. Elevarlo alarga el cálculo y con él el coste para el atacante.
p (paralelismo)
El número de carriles procesados en paralelo, ajustado al número de núcleos del servidor.
Sal
Datos aleatorios distintos para cada hash. **La misma contraseña da un hash diferente cada vez, lo que anula los ataques con tablas arcoíris.**
Hash codificado
El formato que empaqueta nombre del algoritmo, parámetros, sal y resumen en una sola cadena. Lleva todo lo que la verificación necesita.

Preguntas frecuentes

El cálculo de hash genera un nuevo valor de hash a partir de una contraseña, mientras que la verificación comprueba si un hash existente coincide con una contraseña. Lo habitual es generar y guardar el hash al registrarse, y usar solo la verificación al iniciar sesión.

Aparece cuando el hash introducido no tiene el formato de codificación correcto, es decir, no empieza por $argon2id$, $argon2i$ ni $argon2d$. Comprueba que no falten caracteres al copiarlo y que no haya espacios en blanco ni saltos de línea adicionales al principio o al final.

Las causas más habituales son diferencias entre mayúsculas y minúsculas, caracteres de ancho completo o medio, o espacios en blanco añadidos al principio o al final. Como una sola diferencia de un carácter hace que la contraseña no coincida, vuelve a comprobar el texto original.

No. Todo lo que se introduce se procesa en el navegador mediante WebAssembly, y nunca se envía ni se almacena en un servidor.

Usa nuestra herramienta complementaria Calculadora de Hash Argon2, compatible con las tres variantes: Argon2id, Argon2i y Argon2d.
Tool-kun

A propósito — Por qué basta con "comparar hashes" para verificar una contraseña

A primera vista, verificar una contraseña parece consistir en "comparar directamente la contraseña guardada con la que se ha introducido", pero en realidad el mecanismo es completamente distinto. El servidor (o, como en esta herramienta, el propio navegador) vuelve a aplicar el hash a la contraseña introducida usando el mismo algoritmo y la misma sal que se usaron al guardarla, y solo comprueba si el resultado coincide con el hash almacenado. La contraseña original nunca es objeto de comparación en sí misma: basta con determinar si dos hashes coinciden, y esa es precisamente la ventaja de este método.

Este mecanismo funciona porque funciones de hash como Argon2 son "deterministas": con la misma entrada, la misma sal y los mismos parámetros, siempre se obtiene la misma salida. La cadena del hash codificado (con el formato $argon2id$v=19$m=...$sal$hash) incorpora tanto la sal como todos los parámetros usados en el cálculo original, de modo que no es necesario especificarlos de nuevo al verificar: el propio hash codificado permite repetir el cálculo por completo.

Gracias a estas dos propiedades —la "unidireccionalidad" (no se puede deducir la contraseña original a partir del hash) y el "determinismo" (la misma entrada siempre produce la misma salida)— los proveedores de servicios pueden verificar el inicio de sesión de forma segura sin almacenar nunca la contraseña en texto plano. Aunque la base de datos sea filtrada, un atacante solo obtendría los valores de hash, y con un algoritmo computacionalmente costoso como Argon2, un ataque de fuerza bruta para recuperar la contraseña original tardaría un tiempo extremadamente largo.