JWT, Base64 y hashes en resumen
Un JSON Web Token (JWT) es un documento de identidad firmado en formato texto. Las API, el inicio de sesión único y OAuth lo usan para demostrar quién hace una petición. Ante un token, normalmente quieres saber qué contiene, si sigue siendo válido y si la firma es correcta.
Estructura de un JWT
Un JWT tiene tres partes codificadas en Base64URL, separadas por puntos: la cabecera (algoritmo e ID de clave), el payload (los claims como sub, exp o aud) y la firma. La cabecera y el payload solo están codificados, no cifrados. Cualquiera que vea el token puede leerlos. Para datos confidenciales hace falta un token cifrado (JWE).
Verificar la firma
- HS256, HS384, HS512: emisor y receptor comparten un secreto. Quien lo conoce también puede emitir tokens.
- RS256, PS256: firma RSA. Se comprueba con la clave pública, que los proveedores de identidad suelen publicar como JWKS en
/.well-known/jwks.json. - ES256, ES384, ES512: ECDSA con las curvas P-256, P-384 y P-521. Claves más cortas, misma seguridad.
- EdDSA: Ed25519, rápido y robusto frente a errores de implementación.
Un token con alg: none no está firmado y nunca debe aceptarse. La herramienta también avisa de tokens caducados, falta de exp, fechas en milisegundos y cabeceras que traen su propia clave (jwk, jku).
Base64, Base64URL, hex y codificación URL
Base64 representa cualquier byte con 64 caracteres imprimibles y se usa en adjuntos de correo, certificados (PEM) y URI de datos. Base64URL sustituye + y / por - y _ y quita el relleno para que el resultado quepa en URL y JWT. Hex escribe cada byte con dos caracteres y la codificación URL enmascara los caracteres especiales con %. Al decodificar, la herramienta detecta datos binarios, da formato al JSON y reconoce tipos de archivo habituales.
Sumas de comprobación y HMAC
Con SHA-256 o SHA-512 compruebas que un archivo descargado no ha cambiado: pega la suma del proveedor en el campo de comparación, suelta el archivo y listo. MD5 y SHA-1 se consideran rotos y solo deberían usarse para comparar con valores antiguos. CRC32 detecta errores de transmisión, pero no protege frente a manipulaciones. Un HMAC combina el hash con una clave secreta; así firman sus mensajes, por ejemplo, los webhooks.
FAQ
¿Se envían mis tokens o claves?
No. Decodificar, verificar, firmar y calcular hashes se hace en tu navegador con JavaScript y WebCrypto. Los tokens y las claves tampoco aparecen en la barra de direcciones.
¿Cómo verifico un token de Entra ID, Auth0 o Keycloak?
Abre la dirección JWKS del proveedor (suele aparecer como jwks_uri en /.well-known/openid-configuration), copia el JSON y pégalo como clave. La herramienta elige la clave con el kid correspondiente.
¿Por qué mi firma HS256 no es válida si el secreto es correcto?
A menudo el secreto está guardado en Base64. Cambia el formato del secreto a Base64. Fíjate también en espacios o saltos de línea al final.
¿Un JWT está cifrado?
Un JWT normal (JWS) solo está firmado. Cualquiera puede leer la cabecera y el payload. Los tokens cifrados (JWE) tienen cinco partes; la herramienta solo muestra su cabecera.
¿Qué suma de comprobación uso?
SHA-256 o SHA-512 para descargas y comprobaciones de integridad. MD5 y SHA-1 solo si el proveedor no publica otra.