PK Systems PK Systems
Codificadores y decodificadores

Firmador y Verificador de JWT

Firma y verifica JSON Web Tokens en el navegador con HS256/HS384/HS512, RS256 y ES256. Genera claves RSA y ECDSA al vuelo.

Firmador y Verificador de JWT

HS* usa secreto compartido; RS256 y ES256 usan par de claves asimétrico.

El campo alg se sincroniza con el selector de arriba.

Claims estándar: sub, iss, aud, iat, exp, nbf, jti.

Para producción, usa 256+ bits de entropía aleatoria. No reutilices contraseñas.

JWT firmado


            
        

¿Qué es un JWT?

Un JSON Web Token (JWT) es una forma compacta y URL-safe de transportar claims entre dos partes. Consta de tres partes codificadas en Base64URL y unidas por puntos: un header que indica el algoritmo, un payload con claims en JSON y una firma calculada sobre header.payload con una clave. El receptor recalcula la firma y rechaza el token si no coincide. Los JWT son populares en autenticación sin estado porque el servidor no recuerda sesiones — cada petición lleva su propia prueba. La contrapartida es que no se puede revocar un token sin una lista de revocación adicional y cualquier secreto filtrado compromete todo token firmado con él. Esta herramienta se ejecuta íntegramente en tu dispositivo — tus secretos, claves de firma y tokens nunca salen de la página, nunca llegan a nuestros servidores y no se almacenan, indexan, registran ni comparten. Esa garantía importa porque una sola filtración de un secreto de firma JWT puede comprometer todas las cuentas de usuario para las que emite tokens.

Cómo usar

Elige el algoritmo de tu entorno, pega el header y el payload (o usa los predeterminados como plantilla) y pulsa Firmar. Para RS256 y ES256 puedes generar un par de claves nuevo en la propia página; para HS256 introduces un secreto. Para verificar, cambia de modo, pega el token y el secreto o la clave pública y pulsa Verificar. Si la firma es válida, el payload decodificado aparece en el veredicto.

Consejos y trampas habituales

Establece siempre exp (expiración) en producción. No aceptes el algoritmo declarado en el header sin una lista de permitidos — el ataque clásico alg=none explota servidores que confían en él. Rota las claves periódicamente, guarda las privadas en un HSM o gestor de secretos y trata los secretos HMAC como contraseñas. En apps web y móviles, prefiere JWT cortos con refresh tokens en cookies HttpOnly.

Algoritmos compatibles

Alg Familia Uso
HS256HMAC + SHA-256Servicios internos que comparten un único secreto. Rápido y simple.
HS384HMAC + SHA-384Servicios internos que comparten un único secreto. Rápido y simple.
HS512HMAC + SHA-512Servicios internos que comparten un único secreto. Rápido y simple.
RS256RSA + SHA-256APIs públicas que distribuyen la clave pública para verificar.
ES256ECDSA P-256 + SHA-256Como RS256, pero con firmas más cortas y curvas elípticas modernas.

Preguntas frecuentes

¿Se envía algo a tu servidor?
No. La firma y la verificación ocurren íntegramente en tu dispositivo usando la criptografía nativa de tu navegador. Tus secretos, claves y tokens nunca salen de la página, nunca llegan a nuestros servidores y no se almacenan, indexan, registran ni comparten.
¿Cuál es la diferencia entre HS256 y RS256?
HS256 usa un secreto compartido para firmar y verificar — quien puede verificar también puede firmar. RS256 usa un par RSA: la clave privada firma, la pública verifica, así el verificador no tiene material para firmar.
¿Puedo usarlo con claves de producción?
Puedes generar claves de desarrollo aquí, pero las privadas de producción deben vivir en tu KMS o HSM. Pegar una clave real en una web es un evento de seguridad.
¿Por qué falla la verificación?
Causas comunes: algoritmo equivocado en el selector frente al del header, secreto o clave pública incorrectos, token caducado (exp) o aún no válido (nbf), payload manipulado o un copy-paste con espacios extra.
¿Qué codificación usa el payload?
El JWT serializa el JSON en UTF-8 y aplica Base64URL. Las claves JSON distinguen mayúsculas y minúsculas. Las cadenas dentro del payload deben ser UTF-8.
¿Los JWT están cifrados?
El JWT estándar está firmado pero no cifrado — cualquiera puede decodificar el payload. Usa JWE si necesitas confidencialidad o lleva los datos sensibles fuera del token.