# Generador de Nonce y Tokens

Genera tokens de un solo uso criptográficamente seguros para escenarios de seguridad web — tokens CSRF, parámetros state de OAuth/OIDC, nonces de sesión y code_verifier/code_challenge PKCE (S256). Usa crypto.randomBytes, nunca Math.random.

> Página canónica: https://elysiatools.com/es/tools/nonce-generator

- **Categoría:** Security

- **Palabras clave:** nonce, CSRF, OAuth, state, PKCE, token, sesión, seguridad

## Descripción general

Esta herramienta genera **tokens de un solo uso de alta entropía** para escenarios específicos de seguridad web. A diferencia de un generador genérico de cadenas aleatorias, cada escenario aplica automáticamente las convenciones correctas.

Escenarios:
- **Token CSRF**: un token opaco vinculado a la sesión del usuario y enviado con peticiones que cambian estado (formularios, AJAX) para demostrar que la petición vino de tu propia página.
- **State OAuth/OIDC**: un valor no adivinable enviado al servidor de autorización y validado en el callback de redirección, vinculando la respuesta a esta petición y previniendo CSRF de login.
- **Nonce de Sesión**: un valor aleatorio de un solo uso vinculado a una sesión para evitar la repetición de peticiones.
- **PKCE Verifier + Challenge**: genera un `code_verifier` (guardado en el cliente) y deriva el `code_challenge = base64url(SHA256(verifier))` (enviado al servidor de auth) según RFC 7636, de modo que un código de autorización filtrado no pueda canjearse sin el verifier. PKCE fuerza codificación base64url y una longitud de verifier de 32-96 bytes (43-128 caracteres base64url).
- **Personalizado**: un token opaco genérico de alta entropía para cualquier escenario de un solo uso que definas; la longitud en bytes la controla el usuario (8-128).

Opciones:
- **Longitud en bytes**: bytes de entropía. Fijada en 32 (256 bits) para todos los escenarios predefinidos; editable (8-128) solo en Personalizado.
- **Codificación**: base64url (segura para URL, por defecto para tokens web), hex o base64. Forzada a base64url para PKCE.
- **Añadir prefijo de marca de tiempo de expiración**: antepone `base36(segExpiración).token` para que el servidor pueda rechazar tokens expirados sin estado (patrón recomendado por OWASP).
- **TTL (segundos)**: ventana de validez usada por el prefijo de timestamp.
- **Cantidad**: genera 1-50 tokens a la vez.

Seguridad: la aleatoriedad viene de `crypto.randomBytes()` de Node — nunca `Math.random()`. El challenge PKCE usa SHA-256 vía `crypto.createHash()`. Esta herramienta solo genera material de token; no almacena ni valida tokens en el servidor.

## Entradas

- **Escenario** (select)
- **Longitud en bytes** (number): e.g. 32
- **Codificación** (select)
- **Añadir prefijo de marca de tiempo de expiración** (checkbox)
- **TTL (segundos)** (number): e.g. 300
- **Cantidad** (number): e.g. 1

## Cuándo usarlo

- Al implementar flujos de autenticación OAuth 2.0 o OpenID Connect que requieren un parámetro state seguro o un par verificador/desafío PKCE.
- Al mitigar vulnerabilidades de falsificación de petición en sitios cruzados (CSRF) mediante la generación de tokens de un solo uso vinculados a la sesión.
- Al configurar políticas de seguridad de contenido (CSP) que necesitan nonces aleatorios de alta entropía para autorizar la ejecución de scripts.

## Cómo funciona

- Selecciona el escenario de seguridad web requerido, como Token CSRF, Estado OAuth, Nonce de sesión o PKCE.
- Define la longitud en bytes para la entropía y elige la codificación adecuada, como base64url, hex o base64.
- Activa opcionalmente el prefijo de marca de tiempo con un tiempo de vida (TTL) para permitir la validación de expiración sin estado.
- Haz clic en generar para obtener instantáneamente los tokens criptográficos seguros producidos mediante crypto.randomBytes.

## Casos de uso

- Generación de pares code_verifier y code_challenge para asegurar aplicaciones móviles o de página única (SPA) con PKCE.
- Creación de tokens CSRF con prefijo de expiración temporal para proteger formularios HTML tradicionales.
- Generación de parámetros state aleatorios para prevenir ataques de fijación de sesión durante el inicio de sesión con proveedores externos.

## Preguntas frecuentes

### ¿Qué algoritmo de aleatoriedad utiliza este generador?

Utiliza la función criptográfica segura crypto.randomBytes de Node, garantizando una alta entropía imposible de predecir, a diferencia de Math.random.

### ¿Qué es el flujo PKCE y qué genera esta herramienta para él?

PKCE previene la interceptación de códigos de autorización. La herramienta genera un code_verifier aleatorio y calcula su respectivo code_challenge usando SHA-256 en formato base64url.

### ¿Para qué sirve el prefijo de marca de tiempo de expiración?

Antepone la fecha de expiración en formato base36 al token, permitiendo al servidor validar si el token ha caducado sin necesidad de almacenar su estado en una base de datos.

### ¿Por qué se predetermina la codificación base64url?

Porque elimina caracteres conflictivos en URLs como '+', '/' y '=', haciéndola ideal para transmitir tokens de estado en redirecciones OAuth y llamadas API.

### ¿Esta herramienta almacena los tokens generados?

No. Todo el procesamiento y la generación de tokens ocurren localmente en el navegador, garantizando que las claves y secretos nunca se guarden ni se transmitan a servidores externos.

## Herramientas relacionadas

- [Generador de cues de lectura sincronizada](https://elysiatools.com/es/tools/audio-read-along-cue-generator): Genera cues a nivel de frase o palabra con timestamp desde un audio de narración y su guion, para lectura estilo karaoke.
- [Generador moderno de identificadores únicos](https://elysiatools.com/es/tools/uid-generator): Genera identificadores modernos: ULID, NanoID, Snowflake y CUID2. Compara formatos, decodifica marcas de tiempo ULID y elige el ID adecuado.
- [Nota Segura para Compartir AGEX](https://elysiatools.com/es/tools/agex-secure-share-note): Genera una nota clara para que el destinatario sepa como descifrar y verificar un bundle AGEX
- [Generador de firma digital](https://elysiatools.com/es/tools/digital-signature-generator): Firma un mensaje con una clave privada o verifica una firma con una clave pública — soporta RSA-PSS (SHA-256), ECDSA (P-256) y Ed25519. Criptografía puramente local (Node crypto.createSign/createVerify), sin red. Pega una clave PEM para firmar o verificar una firma base64. Esta herramienta firma/verifica; no genera pares de claves.
- [Generador y Verificador HMAC](https://elysiatools.com/es/tools/hmac-generator-verifier): Calcula una firma HMAC sobre un mensaje + secreto con SHA-1/SHA-2/SHA-3/BLAKE2, o verifica una firma entrante (comparación en tiempo constante), con presets para Stripe / Slack / GitHub
- [Generador y Analizador de JWK](https://elysiatools.com/es/tools/jwk-generator): Genera JSON Web Keys (JWK) para RSA, EC (P-256/P-384/P-521/secp256k1) y OKP (Ed25519/Ed448/X25519/X448), o analiza un JWK existente para inspeccionar parámetros, huella y metadatos
- [Generador de OTP numérico](https://elysiatools.com/es/tools/otp-generator): Genera códigos numéricos de un solo uso criptográficamente seguros (verificación por SMS / email, códigos de sorteo, PIN de eventos) con longitud configurable (3-10 dígitos), salida masiva, exclusión opcional de dígitos ambiguos y cuenta atrás de caducidad. Usa crypto.randomInt, no Math.random.
- [Generador de PKCE Code Verifier y Challenge](https://elysiatools.com/es/tools/pkce-code-verifier-generator): Genera, valida y verifica pares code_verifier / code_challenge PKCE (RFC 7636) de OAuth2 / OIDC. Tres modos: (1) generar un par nuevo a partir de bytes aleatorios criptográficos (256/384/512/768 bits), (2) auditar un verifier existente frente al RFC — longitud (43–128), charset \[A-Za-z0-9-._~\] y ≥256 bits de entropía, y (3) verificar un par recomputando BASE64URL(SHA256(verifier)). Opcionalmente construye la URL completa de autorización y el cuerpo del intercambio de token. Complementa al nonce-genérico (que solo emite el par) con auditoría de cumplimiento RFC y verificación de pares.

## Ejemplos

- [Ejemplos de Procesamiento de Imágenes Android Java](https://elysiatools.com/es/samples/android-image-processing-java): Ejemplos de procesamiento de imágenes Android Java incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Android Kotlin](https://elysiatools.com/es/samples/android-image-processing-kotlin): Ejemplos de procesamiento de imágenes Android Kotlin incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Python](https://elysiatools.com/es/samples/web-image-processing-python): Ejemplos de procesamiento de imágenes Web Python usando PIL/Pillow incluyendo lectura, guardado, redimensionamiento y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Rust](https://elysiatools.com/es/samples/web-image-processing-rust): Ejemplos de procesamiento de imágenes Web Rust incluyendo lectura/escritura, escalado y conversión de formato

## Contenido relacionado

- [Herramientas de flujos de tokens, sesiones y 2FA](https://elysiatools.com/es/hubs/token-session-and-2fa-workflows): Depura flujos reales de inicio de sesion con generadores de PKCE y nonce, inspeccion de JWT y JWK, verificacion HMAC, pruebas de OTP y TOTP, e identificadores seguros reunidos en un solo hub.
- [Generadores de esquemas JSON, datos mock y fixtures de API](https://elysiatools.com/es/hubs/json-generate): Herramientas reunidas para generacion de esquemas JSON, construccion de payloads mock y preparacion de fixtures de API en un solo hub.
- [Generadores de efectos CSS, paletas y tokens de diseno](https://elysiatools.com/es/hubs/design-generate): Herramientas reunidas para efectos visuales CSS, construccion de paletas y generacion de tokens de diseno en un solo hub.
- [Generadores de maquetacion y plantillas PDF imprimibles](https://elysiatools.com/es/hubs/pdf-generate): Herramientas reunidas para generacion de maquetacion PDF imprimible y plantillas reutilizables de documentos en un solo hub.
