Claves de firma HMAC para HS256, HS384 y HS512, generadas en tu navegador. Sin red, sin registros, sin subir nada.
Pulsa Espacio para generar otro y C para copiar. Se genera con crypto.getRandomValues en tu dispositivo; la página no carga nada de la red.
Un token firmado con HS256, HS384 o HS512 se verifica con el mismo secreto que lo firmó. Ese secreto no es una contraseña: nadie lo escribe, nadie tiene que recordarlo y no debería poder leerse ni pronunciarse. Es un bloque de bytes aleatorios que vive en una variable de entorno o en un gestor de secretos, y su única función es resultar imposible de adivinar.
Los bytes salen directamente de crypto.getRandomValues, el generador de números aleatorios criptográficamente seguro del navegador, y se escriben después en hexadecimal o Base64. En todo el recorrido no interviene ninguna marca de tiempo, ningún contador ni Math.random. Elegir 256 bits produce 32 bytes aleatorios, 384 produce 48 y 512 produce 64: la longitud se corresponde con el hash que usa cada algoritmo.
Todo ocurre en tu propio dispositivo. La página no hace ninguna petición de red después de cargarse, así que el secreto que ves no ha existido nunca en ningún otro sitio ni viaja a ninguna parte. Al recargar desaparece para siempre.
Como mínimo la del hash del algoritmo que firma el token: 32 bytes (256 bits) para HS256, 48 bytes para HS384 y 64 bytes para HS512. HMAC vuelve a reducir con un hash cualquier clave más larga que su tamaño de bloque, de modo que 200 bytes no son apreciablemente más fuertes que 64. El riesgo real está en quedarse por debajo.
Ninguno de los dos. Son los mismos bytes aleatorios escritos de dos maneras: 32 bytes son 64 caracteres en hexadecimal y unos 44 en Base64, con idéntica fortaleza. Usa el formato que espere tu biblioteca. Si el valor va a pasar por un archivo de configuración o un script de shell, el hexadecimal es más seguro porque solo contiene 0-9 y a-f.
Base64URL sustituye + y / por - y _ y elimina el relleno, de forma que el valor sobrevive dentro de una URL, una cadena de consulta o un nombre de archivo sin necesidad de escaparlo. En cualquier otro sitio basta con Base64 estándar. Los propios JWT se codifican en Base64URL, pero eso afecta al token, no al secreto con el que se firma.
Puedes, y es la forma más habitual de que se rompa una firma HMAC. Una frase fácil de recordar aporta mucha menos entropía de la que sugiere su longitud, y un atacante con un solo token válido puede probar candidatos sin conexión a la velocidad que le permita su hardware. Ahí no hay ningún límite de intentos que lo frene. Usa bytes aleatorios.
Depende por completo de si la página puede enviarlo a alguna parte, y eso es algo que puedes comprobar en vez de dar por bueno. Abre las herramientas de desarrollo del navegador, ve a la pestaña Red y genera todos los secretos que quieras: esta página no hace ninguna petición después de cargarse. Detrás no hay componente de servidor, porque no hay ninguno que pueda haberlo.
En una variable de entorno, o en un gestor de secretos si dispones de uno. Nunca en el repositorio: un secreto subido a git permanece en el historial aunque lo borres después, y los historiales se clonan, se bifurcan y se respaldan. Si ya se ha subido alguno, rotarlo es la única solución real.
Con la periodicidad que de verdad vayas a cumplir, y de inmediato ante cualquier sospecha de filtración. El obstáculo práctico es que rotar invalida todos los tokens firmados con el secreto anterior. Los sistemas que necesitan rotar sin cerrar la sesión de todo el mundo suelen admitir dos secretos durante una ventana: firman con el nuevo, verifican contra ambos y después retiran el antiguo.
No. Esos algoritmos son asimétricos: firman con una clave privada y verifican con la clave pública correspondiente, así que lo que necesitas es un par de claves, no un secreto compartido. Esta página genera secretos HMAC simétricos, que es lo que usa la familia HS. Si quien emite y quien verifica son partes distintas, lo habitual es que lo adecuado sea un algoritmo asimétrico.
No. No hay nada con qué verlo. La página es un único archivo HTML estático con los estilos y el script incrustados; una vez llega a tu navegador no carga nada ni envía nada. Sin analíticas, sin tipografías externas, sin scripts de terceros y sin ningún servidor que pudiera registrarlo.