Cómo funciona esta herramienta
Crea un JWT firmado desde JSON con HMAC, RSA, RSA-PSS o ECDSA.
Usa el ejemplo para ver la entrada y los metadatos esperados y después sustitúyelo por tu valor.
Privacidad y uso seguro
El procesamiento permanece en esta pestaña. Los valores grandes pueden consumir mucha memoria del dispositivo.
No pegues secretos ni claves privadas de producción en una utilidad web. En producción usa una biblioteca JWT mantenida y almacenamiento de claves protegido en el servidor.
Errores habituales que explica
- La entrada está vacía, dañada o no tiene el formato esperado.
- El modo elegido no coincide con el alfabeto, tipo de archivo o representación.
- Un valor muy grande puede agotar la memoria al coexistir las copias codificada y decodificada.
- Una conversión correcta no demuestra que el contenido sea seguro o fiable.
Comandos equivalentes
Usa el entorno o shell de tu flujo de trabajo. Valida entradas no fiables y evita imprimir binarios directamente en la terminal.
Python
import base64, hashlib, hmac, json
b64 = lambda value: base64.urlsafe_b64encode(value).rstrip(b'=').decode()
body = '.'.join([b64(json.dumps(header, separators=(',', ':')).encode()), b64(json.dumps(payload, separators=(',', ':')).encode())])
token = body + '.' + b64(hmac.new(secret, body.encode(), hashlib.sha256).digest())
JavaScript
import { createHmac } from 'node:crypto';
const b64 = value => Buffer.from(JSON.stringify(value)).toString('base64url');
const body = `${b64(header)}.${b64(payload)}`;
const token = `${body}.${createHmac('sha256', secret).update(body).digest('base64url')}`;
Shell
b64url() { openssl base64 -A | tr '+/' '-_' | tr -d '='; }
body="$(printf '%s' "$HEADER" | b64url).$(printf '%s' "$PAYLOAD" | b64url)"
sig=$(printf '%s' "$body" | openssl dgst -sha256 -mac HMAC -macopt "key:$SECRET" -binary | b64url)