search

Found

info Descripción

Comprueba la firma de un JWT recalculando HS256 con tu secreto. HMAC-SHA-256 sobre header.payload, comparado en base64url en 3 estados — RS256/ES256 no.

📘 Cómo usar

  1. Pega el JWT con el formato header.payload.signature
  2. Introduce el secreto HMAC compartido con el que se firmó
  3. Lee la verificación como válida, discrepante o alg no compatible

Verificador de firma JWT HS256

※ Algoritmo: HS256 (HMAC-SHA-256). HMAC de header.payload con el secreto, codificado en base64url

※ Solo HS256. RS256 / ES256 y otros esquemas de clave pública no se manejan aquí

Verificación de firma

Encabezado (JSON)
Carga útil (JSON)
Firma recalculada (base64url)
¡Copiado!
Article

Verificador de firma JWT HS256 | Confirma la firma de un token con tu secreto

Recalcula el HMAC-SHA-256 de header.payload con tu secreto compartido y compara el resultado con la tercera parte del token. La verificación de firma reporta uno de tres estados —válida, discrepante o un alg distinto de HS256— mientras que el encabezado y la carga útil se decodifican y se muestran como JSON con formato.

💡 Sobre esta herramienta

La parte difícil de depurar un JWT no es leerlo, sino saber si la firma realmente cuadra. Un decodificador abre los segmentos base64url y te muestra los datos, pero una carga útil decodificada no dice nada sobre si la firma es correcta: eso exige recalcularla con el secreto.

Esta herramienta toma la parte header.payload, ejecuta HMAC-SHA-256 sobre ella con el secreto que indiques, codifica el MAC en base64url y lo compara como cadena con la firma del final del token. Si coinciden muestra válida; cualquier diferencia muestra discrepante; y un encabezado cuyo alg no sea HS256 se rechaza como alg no compatible. Cambia un carácter del secreto o altera la carga útil y el veredicto cambia, lo que facilita aislar qué valor rompe la firma.

El alcance es solo HS256 (la familia HMAC). RS256 y ES256 son esquemas de clave pública y curva elíptica que se verifican con un par de claves en lugar de un secreto compartido, así que quedan fuera de esta herramienta; cuando el alg es uno de esos, obtienes el estado de alg no compatible en vez de un resultado engañoso.

🧐 Preguntas Frecuentes

P. ¿En qué se diferencia de un decodificador? Un decodificador descodifica en base64url el encabezado y la carga útil y los muestra. Nunca recalcula la firma. Esta herramienta ejecuta el HMAC y te dice si la firma coincide.

P. ¿Por qué mi token sale como discrepante? Casi siempre por un secreto equivocado, una carga útil editada, una copia truncada que perdió los caracteres finales o un . mal colocado entre segmentos. Deshaz un cambio cada vez para encontrar la causa.

P. ¿Qué forma tiene el secreto? Introduce el secreto compartido HS256 como la misma cadena UTF-8 que usa quien firma. Si tu sistema guarda la clave en base64, pega la cadena exacta que el emisor pasa como clave en lugar de volver a codificarla.

P. ¿Comprueba la expiración (exp)? No: solo comprueba la igualdad de la firma. La validación de claims como exp y nbf queda fuera de alcance, así que revísalas tú en el JSON de la carga útil decodificada.

P. ¿Y un token con alg en none? Cualquier alg distinto de HS256, incluido none, devuelve alg no compatible. Aceptar none es una vulnerabilidad conocida, así que los verificadores deberían rechazarlo de plano.

📚 Datos Curiosos

Para aprender la mecánica conviene seguir el flujo paso a paso: la "HS" de HS256 significa HMAC using SHA-256, y la especificación de algoritmos JWA (RFC 7518, §3.1) la define como el único algoritmo de implementación obligatoria, de modo que toda biblioteca JWT conforme debe soportarlo. Un mismo secreto compartido firma y verifica, lo que explica su popularidad en servicios pequeños, pero implica que emisor y verificador comparten la clave: si se filtra, cualquiera puede crear tokens válidos. Un detalle clave para estudiar el proceso es que la firma se calcula sobre el signing input —el encabezado y la carga útil unidos por un .—, así que el tercer segmento es un MAC derivado de esa cadena, no la carga útil en sí.

El JWT y el secreto que pegas permanecen dentro de tu navegador y nunca se envían a un servidor; el HMAC se ejecuta de forma local mediante la API Web Crypto estándar.