Кодирование

JWT Encoder/Decoder

Кодирование и декодирование JWT-токена — заголовок, полезная нагрузка, подпись HMAC и стандартные поля.

A JWT (JSON Web Token) is a compact format for transmitting signed data, made of three dot-separated parts: a header, a payload, and a signature. This tool decodes any JWT and shows all three parts, and can also build a new token signed with HMAC.

Decoding does not verify the signature — reading a token's contents needs no secret key. Verifying the signature only matters when you need to trust the token as genuine.

How to use it

Common uses

Things to keep in mind

A JWT is not encrypted, only Base64URL-encoded — anyone can read the payload. Never put passwords or other secrets in it.

The signature protects against tampering, not against being read. For confidentiality you need extra encryption (JWE) or an HTTPS transport.

Статья об этом инструменте: JWT: структура токена и что значит «декодировать» JWT

Часто задаваемые вопросы

Декодирование JWT проверяет подпись токена?

Нет. Без секрета или ключа декодирование лишь показывает содержимое Header и Payload — это просто Base64URL-данные, доступные всем. Подтвердить, что токен подлинный и не изменён, можно только проверив подпись с правильным ключом.

Значит ли это, что данные в JWT можно спрятать от пользователя?

Нет, Payload не шифруется, а лишь кодируется, поэтому любой человек с токеном может прочитать claims. Секретные данные в JWT класть не стоит — подпись гарантирует только целостность, а не конфиденциальность.

Секрет и ключи, введённые в инструмент, куда-то отправляются?

Нет, кодирование, декодирование и генерация подписи выполняются полностью в браузере — секрет и ключи никуда не передаются.

Что такое атака с подменой алгоритма на "none"?

Если бекенд наивно доверяет полю alg из заголовка токена, злоумышленник может заменить его на none, убрать подпись — и токен с произвольными данными пройдёт проверку. Надёжные библиотеки требуют явно задавать ожидаемый алгоритм при верификации.

Почему не стоит хранить JWT в localStorage для чувствительных сессий?

localStorage доступен любому JavaScript-коду на странице, поэтому уязвим к XSS — вредоносный скрипт может украсть токен. Для сессионных токенов безопаснее использовать httpOnly-cookie, недоступные для JavaScript.

Статьи: Кодирование

Base64: зачем нужно кодирование и как оно работает

Как Base64 превращает бинарные данные в текст ASCII и где это реально нужно.

Base32: чем отличается от Base64 и когда удобнее

Регистронезависимый алфавит Base32 и сценарии, где он удобнее Base64.

URL Encode/Decode: percent-encoding в ссылках

Как спецсимволы в адресной строке и query-параметрах превращаются в %XX-последовательности.

HTML Entities: как безопасно выводить спецсимволы на странице

Почему символы < > & нужно экранировать и как это предотвращает поломку разметки.

Unicode Escape: что означают последовательности \uXXXX

Откуда в JSON и JS-строках берутся последовательности вида \u0041 и что они означают.

ROT13 и шифр Цезаря: простая замена символов

Почему сдвиг на 13 букв делает ROT13 симметричным и зачем его вообще используют сегодня.

Punycode: как домены с кириллицей работают в DNS

Как домен вроде «пример.рф» превращается в ASCII-запись с префиксом xn--.

Азбука Морзе: как текст превращается в точки и тире

Принцип кодирования букв точками и тире и где азбука Морзе применяется сейчас.

Data URI: когда встраивать изображения прямо в код

Как data:-URI встраивает содержимое файла прямо в HTML или CSS и когда это оправдано.

Gzip + Base64: сжатие данных для передачи текстом

Зачем сжатые бинарные данные ещё и кодируют в Base64 перед тем, как поместить в текстовое поле.

XML Entities: экранирование символов в XML-документах

Пять обязательных XML-entity, без которых документ ломается при парсинге.