Base64 простыми словами: что это такое и зачем он нужен
В логах, письмах и настройках регулярно мелькают строки вида SGVsbG8sIHdvcmxkIQ== — длинные, из латинских букв, цифр и знаков равенства на конце. Выглядит загадочно, но на самом деле это просто другой способ записи обычного текста. Раскодируем — и получим «Hello, world!».
Base64 — это не шифрование
Самое частое заблуждение: «строка же нечитаемая, значит, данные защищены». Нет. Base64 — это кодирование, а не шифрование: ключа нет, и раскодировать строку может кто угодно за долю секунды. Оно придумано не для секретности, а для совместимости — чтобы бинарные данные можно было передать через каналы, которые понимают только текст: старые почтовые системы, URL, XML, JSON.
Как это устроено
Идея простая: данные режутся на группы по 3 байта (24 бита), каждая группа превращается в 4 символа из алфавита из 64 знаков — латиница, цифры, плюс и слэш. Если в последней группе не хватает байтов, добавляются знаки =. Отсюда и характерный вид: длина всегда кратна четырём, а на конце могут «висеть» одна или две скобки равенства.
cat → Y2F0
Hello, world! → SGVsbG8sIHdvcmxkIQ==
Привет → 0J/RgNC40LLQtdGCКстати, обратите внимание на третью строку: русские буквы дают более длинный код, потому что перед кодированием текст переводится в UTF-8, где кириллица занимает два байта на символ.
Где вы с ним уже встречались
- вложения в старых почтовых форматах — картинки и файлы передавались именно как base64-текст;
- картинки прямо в HTML и CSS: data:image/png;base64,... — так убирают лишние запросы к серверу для мелких иконок;
- заголовок Authorization: Basic ... при простой авторизации в API;
- JWT-токен — те самые три части через точку, каждая из которых закодирована base64url (вариант с «-» и «_» вместо «+» и «/»).
Как кодировать и декодировать онлайн
Откройте кодировщик Base64, вставьте текст и нажмите нужную кнопку. Раскодировать можно и чужие строки — например, payload из JWT-токена, чтобы понять, какие данные в нём лежат (для этого есть и отдельный декодер JWT, который красиво показывает header и payload). А если нужно превратить картинку в data-URI, пригодится конвертер изображений в Base64.
Кодирование / Декодирование Base64
Кодируйте текст в Base64 или декодируйте строки Base64 с поддержкой Unicode
Кодировщик изображений Base64
Конвертируйте изображения в Base64 data URI и обратно с перетаскиванием, сравнением размеров и копированием CSS/HTML
Декодер JWT-токенов
Декодируйте JWT-токены для просмотра заголовка, полезной нагрузки и подписи