# Генератор PKCE Code Verifier и Challenge

Создание, проверка и верификация пар code_verifier / code_challenge PKCE (RFC 7636) для OAuth2 / OIDC. Три режима: (1) создать новую пару из криптостойких случайных байт (256/384/512/768 бит), (2) аудит имеющегося verifier по RFC — длина (43–128), набор [A-Za-z0-9-._~] и ≥256 бит энтропии, (3) проверить пару, пересчитав BASE64URL(SHA256(verifier)). При желании строит полный URL запроса авторизации и тело обмена токена. Дополняет универсальный nonce-generator (только выдаёт пару) аудитом соответствия RFC и проверкой пар.

> Каноническая страница: https://elysiatools.com/ru/tools/pkce-code-verifier-generator

- **Категория:** Security

- **Ключевые слова:** pkce, oauth2, oidc, rfc 7636, code_verifier, code_challenge, s256, код авторизации, spa, мобильное, публичный клиент, sha256, verifier, challenge, безопасность oauth

## Обзор

Специализированный инструмент PKCE (Proof Key for Code Exchange, RFC 7636) для разработчиков OAuth2 / OIDC:

1. Выберите режим: Generate (новая пара), Validate (аудит вашего verifier) или Verify (проверить совпадение пары verifier/challenge).
2. Режим Generate создаёт code_verifier из криптостойких случайных байт (32/48/64/96 байт = 256/384/512/768 бит), кодирует в base64url и считает code_challenge = BASE64URL(SHA256(verifier)). Verifier остаётся на клиенте; на сервер авторизации уходит только challenge.
3. Режим Validate аудитирует существующий verifier по RFC 7636: длина 43–128 символов, набор только [A-Za-z0-9-._~], энтропия ≥256 бит. При соответствии показывает S256 challenge.
4. Режим Verify пересчитывает BASE64URL(SHA256(verifier)) и сравнивает с предоставленным code_challenge — полезно при отладке "invalid_grant" или несоответствия challenge при обмене токена.
5. При желании заполните endpoint авторизации, client ID и redirect URI для построения полного URL запроса (с code_challenge_method=S256) и тела обмена токена, отправляющего секретный verifier.

Офлайн и криптостойко: случайные байты — из платформенного CSPRNG; SHA256 через модуль crypto. Без сетевых вызовов, значения не покидают браузер.

## Входные данные

- **Режим** (select)
- **Длина verifier (байт энтропии)** (select)
- **Имеющийся code_verifier (для проверки)** (textarea): Paste a code_verifier here (used in Validate and Verify modes)
- **Имеющийся code_challenge (режим проверки пары)** (textarea): Paste the code_challenge to compare against (Verify mode)
- **Endpoint авторизации (опц., для URL)** (text): https://auth.example.com/oauth2/authorize
- **Client ID (опц., для URL)** (text): my-client-id
- **Redirect URI (опц., для URL)** (text): https://app.example.com/callback

## Когда использовать

- При разработке и тестировании авторизации в одностраничных приложениях (SPA) или мобильных клиентах, использующих OAuth2 Authorization Code Flow с PKCE.
- Для проверки существующего code_verifier на соответствие требованиям RFC 7636 по длине, набору символов и уровню энтропии.
- При отладке ошибок типа "invalid_grant" на этапе обмена кода авторизации на токен для проверки соответствия пары verifier и challenge.

## Как это работает

- Выберите режим работы: генерация новой пары (Generate), аудит существующего verifier (Validate) или проверка пары на соответствие (Verify).
- В режиме генерации инструмент использует системный CSPRNG для создания случайных байт заданной длины (от 32 до 96 байт), кодирует их в base64url для получения code_verifier и вычисляет code_challenge по формуле BASE64URL(SHA256(verifier)).
- В режимах проверки инструмент анализирует длину (43–128 символов), разрешенный набор символов \[A-Za-z0-9-._~\] и пересчитывает хеш SHA256 для сверки с предоставленным challenge.
- При заполнении дополнительных полей (Endpoint, Client ID, Redirect URI) инструмент автоматически формирует готовый URL запроса авторизации и тело POST-запроса для обмена токенов.

## Сценарии использования

- Генерация безопасного code_verifier и соответствующего S256 code_challenge для интеграции авторизации в мобильное приложение.
- Аудит сгенерированного бэкендом или сторонней библиотекой ключа verifier на соответствие ограничениям спецификации RFC 7636.
- Быстрое конструирование тестового URL авторизации OAuth2 с правильными параметрами PKCE для проверки в Postman или браузере.

## Частые вопросы

### Безопасно ли генерировать verifier на этом сайте?

Да, генерация происходит полностью на стороне клиента в браузере с использованием CSPRNG. Данные не отправляются на сервер.

### Какую длину verifier лучше выбрать?

Рекомендуется использовать 64 байта (512 бит энтропии), что дает 86 символов после кодирования base64url и полностью соответствует RFC 7636.

### Какие символы разрешены в code_verifier?

Согласно RFC 7636, разрешены только символы: [A-Za-z0-9], дефис (-), точка (.), подчеркивание (_) и тильда (~).

### Что такое метод S256 в PKCE?

Это метод, при котором code_challenge создается как Base64URL-хеш SHA256 от code_verifier. Это стандартный и наиболее безопасный метод.

### Почему возникает ошибка "invalid_grant" при обмене кода?

Часто это связано с тем, что отправленный на шаге авторизации code_challenge не соответствует переданному при обмене токена code_verifier. Используйте режим Verify для проверки их связи.

## Связанные инструменты

- [Сравнение хеш-алгоритмов](https://elysiatools.com/ru/tools/hash-algorithm-comparator): Хеширует один и тот же вход с помощью MD5, SHA-1, SHA-256, SHA-512, BLAKE2b и BLAKE3 и сравнивает их: длину, hex/Base64-дайджест, статус безопасности (взломан/современный) и относительный бенчмарк скорости. Полезно для обучения, выбора алгоритма и проверки контрольных сумм.
- [Генератор мнемонических фраз BIP39](https://elysiatools.com/ru/tools/mnemonic-bip39-generator): Генерирует или проверяет BIP39-фразы из 12-24 слов с выводом энтропии и seed PBKDF2-HMAC-SHA512
- [Генератор хешей текста](https://elysiatools.com/ru/tools/text-hash-generator): Вычисляет MD5, SHA-1, SHA-256, SHA-512 и CRC-32 любого текста сразу. Возвращает hex и Base64 по UTF-8 кодировке.
- [Шифрование / Расшифрование RSA](https://elysiatools.com/ru/tools/rsa-encrypt-decrypt): Шифрует текст открытым ключом RSA или расшифровывает шифртекст соответствующим закрытым ключом, с OAEP-паддингом (SHA-1 или SHA-256). Длинные сообщения бьются на блоки. Ключи и данные обрабатываются локально. PKCS#1 v1.5 не предлагается (Node отключает его для расшифровки из-за атак Bleichenbacher).
- [Генератор пары ключей SSH](https://elysiatools.com/ru/tools/ssh-key-generator): Генерирует пару SSH-ключей (рекомендуется Ed25519, либо RSA 4096, ECDSA P-256) с открытым ключом в формате OpenSSH для ~/.ssh/authorized_keys, отпечатком SHA256 и закрытым ключом PEM. Опциональное шифрование паролем. Работает локально.
- [Тиреоидный индекс (интерпретация ТТГ/FT4/FT3)](https://elysiatools.com/ru/tools/thyroid-index): Сопоставляет ТТГ, FT4 и (опционально) FT3 для оценки тиреоидной оси. Референс для взрослых: ТТГ 0.4–4.0 мМЕ/л, FT4 0.8–1.8 нг/дл (≈10–23 пмоль/л), FT3 2.3–4.2 пг/мл (≈3.5–6.5 пмоль/л). ТТГ высок + FT4 низ → явный первичный гипотиреоз (Хасимото, после абляции, дефицит йода, амиодарон/литий); ТТГ высок + FT4 норм → субклинический гипотиреоз; ТТГ низ + FT4 высок (±FT3 высок) → явный первичный гипертиреоз (Базедов, токсический узел, ранний тиреоидит, йод/амиодарон); ТТГ низ + FT4 норм → субклинический гипертиреоз или экзогенный гормон, или ранний тиреоидит — определить FT3 для исключения Т3-токсикоза; ТТГ норм/низ + FT4 низ → центральный (вторичный/третичный) гипотиреоз (патология гипофиза/гипоталамуса); ТТГ высок + FT4 высок → ТТГ-продуцирующая аденома или резистентность к тиреоидным гормонам; всё в норме → эутиреоз (при нетиреоидной болезни возможен низкий FT3). Ограничения: циркадный ритм ТТГ (пик 22:00–02:00, надир вечером); дофамин, стероиды, тяжёлая болезнь, каберголин подавляют ТТГ; при беременности — триместр-специфичные диапазоны; гетерофильные антитела искажают ТТГ/FT4; амиодарон — тиреотоксикоз 1 типа (йод) или 2 типа (деструктивный). Источники: ATA 2014/2016, NACB 2002, Garber 2012, MDCalc. Не медицинская консультация.
- [Автономный генератор кодов TOTP / HOTP](https://elysiatools.com/ru/tools/totp-hotp-offline-generator): Генерирует одноразовые пароли TOTP RFC 6238 (6/8 цифр, 30/60 с) и HOTP RFC 4226 (по счётчику) из base32-секрета, локально, с HMAC-SHA1/256/512, и формирует otpauth:// URI
- [AI-генератор идей доменов](https://elysiatools.com/ru/tools/ai-domain-name-idea-generator): Введите ключевые слова бренда — ИИ сгенерирует до 10 идей доменов, отфильтровав занятые через DNS + RDAP. Для стартапов и разработчиков.

## Примеры

- [Примеры QR-кодов](https://elysiatools.com/ru/samples/qrcode-samples): Примерные изображения QR-кодов для тестирования инструментов чтения и генерации QR-кодов
- [Примеры Комментариев Кода](https://elysiatools.com/ru/samples/code-comment-samples): Примеры кода с различными стилями комментариев для тестирования удаления комментариев
- [Примеры Обработки Изображений Web Python](https://elysiatools.com/ru/samples/web-image-processing-python): Примеры обработки изображений Web Python используя PIL/Pillow включая чтение, сохранение, изменение размера и преобразование формата
- [Примеры Кода с Недопустимыми Именами Переменных](https://elysiatools.com/ru/samples/code-invalid-variable-names-samples): Примеры кодовых файлов, демонстрирующие недопустимые соглашения об именовании переменных на различных языках программирования

## Связанные материалы

- [Инструменты кодирования и конвертации аудио](https://elysiatools.com/ru/hubs/audio-convert): Сравните инструменты конвертации аудиоформатов, изменения битрейта, частоты дискретизации, смены кодека и экспорта в одном хабе.
- [Инструменты конвертации форматов изображений и анимированного экспорта](https://elysiatools.com/ru/hubs/image-convert): Сравните конвертеры JPG, PNG, GIF, AVIF, WebP, TIFF, ICO, base64 и инструменты экспорта анимированных изображений в одном хабе.
- [Инструменты JSON-обмена и перевода форматов](https://elysiatools.com/ru/hubs/json-convert): Сравните инструменты преобразования JSON для CSV, YAML, TOML, GraphQL, XML, Markdown, Excel, BSON, EDN и других структурированных форматов в одном хабе.
- [Инструменты перевода цветовых пространств для веба и печати](https://elysiatools.com/ru/hubs/design-convert): Подборка инструментов для перевода цветовых пространств между вебом и печатью в одном хабе.
