# Generador de PKCE Code Verifier y Challenge

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.

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

- **Categoría:** Security

- **Palabras clave:** pkce, oauth2, oidc, rfc 7636, code_verifier, code_challenge, s256, código de autorización, spa, móvil, cliente público, sha256, verifier, challenge, seguridad oauth

## Descripción general

Una herramienta PKCE (Proof Key for Code Exchange, RFC 7636) enfocada para desarrolladores OAuth2 / OIDC:

1. Elige un modo: Generate (un par nuevo), Validate (auditar un verifier que tengas) o Verify (comprobar si un par verifier/challenge coincide).
2. El modo Generate deriva un code_verifier de bytes aleatorios criptográficos (elige 32/48/64/96 bytes = 256/384/512/768 bits) y lo codifica en base64url, luego calcula code_challenge = BASE64URL(SHA256(verifier)). El verifier se queda en el cliente; sólo el challenge va al servidor de autorización.
3. El modo Validate audita un verifier existente frente a RFC 7636: longitud 43–128 caracteres, charset limitado a [A-Za-z0-9-._~] y ≥256 bits de entropía. Si cumple, muestra también el challenge S256 que implica.
4. El modo Verify recalcula BASE64URL(SHA256(verifier)) y lo compara con un code_challenge proporcionado — útil al depurar errores "invalid_grant" o de challenge mal emparejado durante el intercambio de token.
5. Opcionalmente rellena el endpoint de autorización, client ID y redirect URI para construir la URL completa de petición (con code_challenge_method=S256) y el cuerpo de intercambio de token que luego envía el verifier secreto.

Offline y criptográficamente sólido: los bytes aleatorios vienen del CSPRNG de la plataforma; SHA256 vía el módulo crypto. Sin llamadas de red, ningún valor sale del navegador.

## Entradas

- **Modo** (select)
- **Longitud del verifier (bytes de entropía)** (select)
- **code_verifier existente (a validar/verificar)** (textarea): Paste a code_verifier here (used in Validate and Verify modes)
- **code_challenge existente (modo verificación)** (textarea): Paste the code_challenge to compare against (Verify mode)
- **Endpoint de autorización (opcional, para URL)** (text): https://auth.example.com/oauth2/authorize
- **Client ID (opcional, para URL)** (text): my-client-id
- **URI de redirección (opcional, para URL)** (text): https://app.example.com/callback

## Cuándo usarlo

- Al implementar el flujo de código de autorización con PKCE en aplicaciones móviles, de escritorio o Single Page Applications (SPA).
- Al depurar errores de tipo 'invalid_grant' o discrepancias de firmas durante la fase de intercambio de tokens en servidores OAuth2/OIDC.
- Al auditar si un code_verifier generado por su biblioteca cliente cumple con los requisitos de longitud, juego de caracteres y entropía del estándar RFC 7636.

## Cómo funciona

- Seleccione el modo de operación: generar un nuevo par, validar un verifier existente o verificar la coincidencia de un par verifier/challenge.
- En el modo de generación, elija la longitud en bytes para derivar un code_verifier seguro mediante el CSPRNG del navegador y calcular su code_challenge usando SHA-256 codificado en base64url.
- Opcionalmente, introduzca los parámetros de su cliente (Client ID, Endpoint, Redirect URI) para estructurar la URL de autorización y el cuerpo de la petición de intercambio de token.
- Todo el procesamiento se realiza de forma local en el navegador mediante la API Web Crypto, asegurando que las claves nunca se transmitan por internet.

## Casos de uso

- Generación rápida de pares PKCE seguros con entropía configurable para pruebas manuales de flujos de autenticación en Postman o cURL.
- Auditoría de cumplimiento de cadenas de verificación generadas por SDKs personalizados para asegurar que respetan el conjunto de caracteres y la longitud del estándar RFC 7636.
- Diagnóstico y resolución de fallos de emparejamiento de tokens mediante la verificación manual de la correspondencia entre un verifier y un challenge.

## Preguntas frecuentes

### ¿Qué es PKCE y por qué es necesario?

Es una extensión de seguridad para OAuth 2.0 (RFC 7636) que mitiga el riesgo de interceptación del código de autorización en clientes públicos que no pueden almacenar un secreto de forma segura.

### ¿Cómo se calcula el code_challenge a partir del verifier?

Se aplica el algoritmo hash SHA-256 al code_verifier y el resultado binario se codifica utilizando el formato Base64URL sin relleno.

### ¿Es seguro generar estos valores en esta página web?

Sí, la generación y validación se realizan localmente en su navegador utilizando la API criptográfica nativa (CSPRNG), sin realizar llamadas de red ni enviar datos a servidores externos.

### ¿Cuáles son los requisitos de un code_verifier según el RFC 7636?

Debe tener una longitud de entre 43 y 128 caracteres, utilizar únicamente caracteres del conjunto [A-Za-z0-9-._~] y contar con al menos 256 bits de entropía.

### ¿Qué causa el error 'invalid_grant' relacionado con PKCE?

Generalmente ocurre cuando el code_verifier enviado en la solicitud de token no coincide con el hash del code_challenge enviado previamente en la solicitud de autorización.

## Herramientas relacionadas

- [Comparador de algoritmos hash](https://elysiatools.com/es/tools/hash-algorithm-comparator): Aplica MD5, SHA-1, SHA-256, SHA-512, BLAKE2b y BLAKE3 a la misma entrada y compáralos lado a lado: longitud de salida, digest hex/Base64, estado de seguridad (roto/moderno) y benchmark de velocidad relativa. Útil para enseñanza, elegir algoritmo o verificar checksums.
- [Generador de frases mnemónicas BIP39](https://elysiatools.com/es/tools/mnemonic-bip39-generator): Genera o valida frases BIP39 de 12 a 24 palabras con salida de entropía y seed PBKDF2-HMAC-SHA512
- [Generador de hash de texto](https://elysiatools.com/es/tools/text-hash-generator): Calcula MD5, SHA-1, SHA-256, SHA-512 y CRC-32 de cualquier texto de una vez. Devuelve hex y Base64 sobre la codificación UTF-8.
- [Cifrado / Descifrado RSA](https://elysiatools.com/es/tools/rsa-encrypt-decrypt): Cifra texto con una clave pública RSA o descifra el texto cifrado con la clave privada correspondiente, usando padding OAEP (SHA-1 o SHA-256). Maneja mensajes largos por bloques. Las claves y datos se quedan en local. No se ofrece PKCS#1 v1.5 (Node lo deshabilita para descifrar por ataques Bleichenbacher).
- [Generador de par de claves SSH](https://elysiatools.com/es/tools/ssh-key-generator): Genera un par de claves SSH (Ed25519 recomendado, o RSA 4096, ECDSA P-256) con la clave pública en formato OpenSSH lista para ~/.ssh/authorized_keys, una huella SHA256 y una clave privada PEM. Cifrado opcional con contraseña. Se ejecuta localmente.
- [Índice Tiroideo (interpretación TSH/FT4/FT3)](https://elysiatools.com/es/tools/thyroid-index): Interpreta conjuntamente TSH, FT4 y FT3 (opcional) para evaluar el eje tiroideo. Rangos adultos: TSH 0.4–4.0 mIU/L, FT4 0.8–1.8 ng/dL (≈10–23 pmol/L), FT3 2.3–4.2 pg/mL (≈3.5–6.5 pmol/L). TSH alto + FT4 bajo → hipotiroidismo primario franco (Hashimoto, posablación, déficit de yodo, amiodarona/litio); TSH alto + FT4 normal → hipotiroidismo subclínico; TSH bajo + FT4 alto (±FT3 alto) → hipertiroidismo primario franco (Graves, nódulo tóxico, tiroiditis fase inicial, yodo/amiodarona); TSH bajo + FT4 normal → hipertiroidismo subclínico o hormona exógena o tiroiditis precoz — medir FT3 para descartar tireotoxicosis por T3; TSH normal/bajo + FT4 bajo → hipotiroidismo central (secundario/terciario, enfermedad hipofisaria/hipotalámica); TSH alto + FT4 alto → adenoma productor de TSH o resistencia a hormona tiroidea; todo normal → eutiroideo (enfermedad no tiroidea puede dar FT3 bajo). Precauciones: ritmo circadiano de TSH (pico 22:00–02:00, nadir vespertino); dopamina, esteroides, enfermedad grave y cabergolina suprimen TSH; en el embarazo usar rangos específicos por trimestre; anticuerpos heterófilos falsean TSH/FT4; la amiodarona puede producir tireotoxicosis tipo 1 (yodo) o tipo 2 (destructiva). Fuentes: ATA 2014/2016, NACB 2002, Garber 2012, MDCalc. No es consejo médico.
- [Generador de códigos TOTP / HOTP sin conexión](https://elysiatools.com/es/tools/totp-hotp-offline-generator): Genera contraseñas de un solo uso TOTP RFC 6238 (6/8 dígitos, 30/60 s) y HOTP RFC 4226 (por contador) a partir de un secreto base32, sin conexión, con HMAC-SHA1/256/512, y exporta una URI otpauth://
- [Generador de ideas de dominios con IA](https://elysiatools.com/es/tools/ai-domain-name-idea-generator): Introduce palabras clave de marca y la IA genera hasta 10 ideas de dominio, filtrando los ya registrados con DNS + RDAP. Para emprendedores y desarrolladores.

## Ejemplos

- [Ejemplos de Códigos QR](https://elysiatools.com/es/samples/qrcode-samples): Imágenes de códigos QR de muestra para probar herramientas de lectura y generación de códigos QR
- [Ejemplos de Comentarios de Código](https://elysiatools.com/es/samples/code-comment-samples): Archivos de muestra de código con varios estilos de comentarios para probar la eliminación de comentarios
- [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 Código con Nombres de Variables Inválidos](https://elysiatools.com/es/samples/code-invalid-variable-names-samples): Archivos de código de muestra que demuestran convenciones de nomenclatura de variables inválidas en diferentes lenguajes de programación

## Contenido relacionado

- [Herramientas de codificacion y conversion de audio](https://elysiatools.com/es/hubs/audio-convert): Compara conversion de formatos de audio, cambios de bitrate, conversion de frecuencia de muestreo, cambio de codec y exportacion en un solo hub.
- [Herramientas de conversion de formatos de imagen y exportacion animada](https://elysiatools.com/es/hubs/image-convert): Compara convertidores de imagen para JPG, PNG, GIF, AVIF, WebP, TIFF, ICO, base64 y salidas pensadas para animacion en un solo hub.
- [Herramientas de intercambio JSON y traduccion de formatos](https://elysiatools.com/es/hubs/json-convert): Compara herramientas de conversion JSON para CSV, YAML, TOML, GraphQL, XML, Markdown, Excel, BSON, EDN y otros formatos estructurados en un solo hub.
- [Herramientas de conversion de espacios de color para web e impresion](https://elysiatools.com/es/hubs/design-convert): Herramientas reunidas para conversion de espacios de color entre web e impresion en un solo hub.
