Pack Camo

Generador de secretos JWT

Claves secretas HS256, HS384 y HS512 aleatorias en hex o Base64, listas para tu .env. Todo se ejecuta localmente: no se sube nada.

Entrada
HS256 · HS384 · HS512
Salida
Hex · Base64 · Base64URL · .env

HS256 necesita al menos 32 bytes.

Tu secreto

Clave de 256 bits · HS256 · 0 caracteres

Línea .env

JWT_SECRET=
Probar en el decodificador JWT

Generado en tu dispositivo con crypto.getRandomValues. No se envía ni se guarda nada.

Un secreto digno de firmar

Un JWT firmado con HMAC es tan fuerte como su secreto. Quien lo adivine puede fabricar tokens en los que tu servidor confiará, y los secretos cortos o elegidos por personas son justo lo primero que prueban las herramientas de cracking sin conexión. Este generador obtiene la clave del generador de números aleatorios criptográfico de tu navegador, con la longitud que exige el algoritmo.

Qué longitud debe tener el secreto

  • HS256 necesita al menos 32 bytes (256 bits). Algo más corto es más débil que el hash con el que se combina, y muchas bibliotecas lo rechazan.
  • HS384 necesita al menos 48 bytes (384 bits).
  • HS512 necesita al menos 64 bytes (512 bits).
  • Más largo no hace daño. Una clave más larga que el tamaño de bloque del hash se reduce primero con el hash, así que no se gana nada pasando de 64 bytes en HS256 o de 128 bytes en HS512.

Cómo usar el secreto

  • Mantenlo fuera de tu código. Guárdalo en una variable de entorno o en un gestor de secretos; "Copiar como .env" te da la línea lista para pegar.
  • Cuidado con la codificación. Algunas bibliotecas aceptan el secreto como texto, otras esperan bytes en bruto en Base64. Si lo decodificas a bytes, elige aquí Base64 o Base64URL; si tu biblioteca usa la cadena tal cual, hex es la opción más segura.
  • Rotarlo cierra la sesión de todos. Todos los tokens firmados con el secreto anterior dejan de verificarse, así que planifica la rotación en lugar de hacerla con prisas.
  • Prueba antes de desplegar. "Probar en el decodificador JWT" abre el decodificador con un token de ejemplo firmado con este secreto, para que veas cómo es una firma válida.

Preguntas frecuentes

¿Cómo genero una clave secreta JWT?
Elige el algoritmo que usa tu servidor y se genera al instante un secreto de la longitud correcta. Elige la codificación que espera tu biblioteca y copia el secreto o la línea .env ya preparada. Pulsa Regenerar para obtener uno nuevo.
¿Qué longitud debe tener un secreto JWT para HS256?
Al menos 32 bytes, es decir, 256 bits: 64 caracteres hex o 43 caracteres Base64URL. Un secreto más corto es más débil que el hash SHA-256 con el que se usa.
¿Es seguro generar un secreto en el navegador?
Sí. La clave sale de crypto.getRandomValues, el mismo generador criptográfico que usan los navegadores para TLS, y se crea en tu dispositivo. No se envía a un servidor, ni se registra ni se guarda.
¿Debo usar hex o Base64 para mi secreto JWT?
Ambos contienen los mismos bytes aleatorios. Hex es lo más seguro si tu biblioteca trata el secreto como texto plano; Base64 o Base64URL es lo correcto si tu biblioteca decodifica antes el secreto a bytes en bruto, como piden muchas opciones de configuración.
¿Puedo usar una contraseña como secreto JWT?
No es buena idea. Las contraseñas son cortas y predecibles comparadas con 32 bytes aleatorios, y cualquiera que tenga uno de tus tokens puede intentar adivinar el secreto sin conexión, tan rápido como le permita su hardware.