Кодировщик JWT
Создание и подпись JWT с HS256, HS384 или HS512 в браузере. Редактируйте JSON заголовка и payload — порядок claims и поля вроде kid сохраняются.
Введённые данные и файлы остаются в браузере
Заголовок, нагрузка и подпись
Исправьте JSON заголовка и нагрузки — подписанный токен появится здесь по мере ввода.
На этой странице
Соберите подписанный JSON Web Token для тестирования API и сценариев аутентификации: отредактируйте JSON заголовка и payload, выберите HS256, HS384 или HS512, введите секрет и скопируйте токен — он обновляется при каждом нажатии клавиши.
Подробное описание функциональности
И заголовок, и payload должны быть JSON-объектами; невалидный JSON или не объект (например, массив) отмечается под соответствующим полем, и токен не создаётся. JSON сжимается (пробелы удаляются) и кодируется в base64url без выравнивания, с сохранением порядка claims и дополнительных полей заголовка вроде kid или cty. Значение alg в заголовке заменяется алгоритмом, выбранным в списке, а если его нет — добавляется первым.
Подпись HMAC (SHA-256, SHA-384 или SHA-512) вычисляет модуль криптографии на Rust, скомпилированный в WebAssembly; секрет используется как текст UTF-8. Доступны только симметричные алгоритмы HMAC — токены RS256 или ES256, которым нужен закрытый ключ, здесь создать нельзя. С пустым секретом токен всё равно создаётся (подписанный пустым ключом), но это годится только для экспериментов.
Секрет и claims остаются на странице и не сохраняются. Инструмент сам не добавляет iat и exp: вписывайте значения NumericDate (Unix-время в секундах) в payload самостоятельно.
Практические примеры
Тестовый вектор jwt.io: заголовок по умолчанию {"alg":"HS256","typ":"JWT"} и payload {"sub":"1234567890","name":"John Doe","iat":1516239022} с секретом your-256-bit-secret дают токен, оканчивающийся на SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c, — ровно как на jwt.io.
Идентификатор ключа и срок действия: заголовок {"alg":"HS256","typ":"JWT","kid":"key-2026"}, payload {"sub":"42","role":"admin","exp":1767225600} и алгоритм HS384 — закодированный заголовок становится {"alg":"HS384","typ":"JWT","kid":"key-2026"} с сохранённым порядком полей, а подпись имеет длину 64 символа.
Не объект: payload [1,2] выводит под полем «Должен быть JSON-объект», и токен очищается.
Как использовать этот инструмент
Отредактируйте заголовок
Поправьте JSON в поле Заголовок (Header) — добавьте
kid, если он нужен проверяющей стороне;algберётся из списка алгоритмов.Впишите claims
Запишите claims (
sub,role,exp…) в Полезная нагрузка (Payload) в виде JSON-объекта.Выберите алгоритм и секрет
Выберите HS256, HS384 или HS512 в списке Алгоритм и введите общий секрет в Секретный ключ.
Скопируйте токен
Токен в поле Закодированный токен обновляется при каждом изменении; нажмите Копировать токен, чтобы скопировать его.
Советы и лучшие практики
- Используйте случайный секрет не короче хеша: 32 байта для HS256, 48 для HS384, 64 для HS512.
exp,nbfиiatзадаются в секундах, а не в миллисекундах:1767225600, а не1767225600000.- Учитывается каждый символ секрета, включая пробел или перевод строки в конце.
- Payload лишь закодирован в base64url, а не зашифрован — его может прочитать любой, у кого есть токен.
- Проверьте результат в декодере JWT с тем же секретом.