Кодировщик / декодировщик Base64

Мгновенно кодируйте и декодируйте строки и файлы Base64 — прямо в браузере.

Источник

Что такое Base64?

Base64 — это схема кодирования, которая представляет бинарные данные с помощью 64 печатаемых символов. Её берут всегда, когда чисто текстовый канал должен переносить байты: маленькие картинки, встроенные прямо в HTML, токены, вложения email, data-URL, а также поля JSON, где лежат бинарные блоки.

Base64 — это кодирование, а не шифрование. Декодировать строку Base64 можно мгновенно и получить исходное содержимое, поэтому полагаться на неё как на защиту нельзя. Всё, что лежит внутри Base64, фактически открыто — если только данные не были зашифрованы до кодирования.

Под капотом Base64 берёт 3 байта (24 бита) и переписывает их 4 символами из фиксированного алфавита из 64 знаков (A–Z, a–z, 0–9, +, /). Если длина входа не кратна 3, кодировщик добавляет один или два символа = в конце — это padding. Именно поэтому строки Base64 часто заканчиваются на =.

Кратко Base64 превращает бинарные данные в безопасный для копирования текст. В таком виде данные встречаются внутри JWT, в data-URL и во вложениях писем. Это не шифрование.

Что вы поймёте, поработав с Base64

  • Кодирование меняет только представление данных — оно их не прячет и не защищает: декодировать может кто угодно.
  • Длина результата примерно в 4/3 раза больше исходных байт — удобно, но неэкономно по объёму.
  • Символы = дополняют последнюю четвёрку — это нормальная часть многих строк Base64, а не ошибка.
  • Существуют две родственные разновидности: стандартный Base64 (с + и /) и Base64URL (с - и _, чтобы безопасно жить в URL и JWT).

Как закодировать и раскодировать Base64 шаг за шагом

  1. Выберите направление

    Выберите «Кодировать», если у вас обычный текст или файл и вам нужен Base64 на выходе. «Декодировать» — если у вас уже есть строка Base64 и вы хотите получить исходное содержимое.

  2. Вставьте текст или перетащите файл

    Вставьте строку в текстовое поле или перетащите файл (картинку, PDF, что угодно) в зону загрузки. Файлы кодируются как есть — байт в байт. Если включить опцию data:, результат превращается в data-URL, готовый к встраиванию в HTML или CSS.

  3. Посмотрите результат

    При кодировании вы получите строку Base64. При декодировании — исходный текст, а если внутри был файл, то его тип, размер и предпросмотр (для картинок), а также кнопку скачивания.

  4. Скопируйте или скачайте результат

    Нажмите «Копировать», чтобы поместить результат в буфер обмена, или «Скачать», чтобы сохранить его файлом. Всё работает прямо в браузере — данные никуда не уходят с вашего компьютера.

Как это устроено: наглядный пример

Возьмём слово Man. Три байта (24 бита) разбиваются на четыре группы по 6 бит, и каждая группа заменяется символом алфавита:

СимволMan
Байт (ASCII)7797110
Биты010011010110000101101110
6-битные группы010011010110000101101110
Число1922546
Символ Base64TWFu

Получилось TWFu. Если не хватает байтов до тройки, остаток добавляется нулевыми битами, а в конец ставится padding: Ma → TWE=, M → TQ==.

Краткий справочник по Base64

То, с чем вы будете сталкиваться постоянно, как только начнёте работать с Base64, описано в RFC 4648.

ЭлементЧто этоПример
Алфавит64 символа стандартного Base64A–Z, a–z, 0–9, +, /
URL-safe алфавитИспользуется в JWT и URLA–Z, a–z, 0–9, -, _
PaddingДополняет последнюю группу, если длина не кратна 3= или ==
Размер группыБайт на блок → символов на выходе3 байта → 4 символа
Рост длиныРезультат примерно на 33% длиннее входа100 Б → 136 символов
Перенос строкMIME (письма) — по 76 символов, PEM — по 64строки с \r\n
Data URLВстраивание файла прямо в HTML/CSSdata:image/png;base64,...

Примеры Base64, которые стоит попробовать

Декодируем простое слово

Закодировано

SGVsbG8gV29ybGQ=

Раскодировано

Hello World

Завершающий = — это padding: Hello World занимает 11 байт, что не кратно 3. Декодер всегда корректно его убирает.

Кодируем небольшой JSON

Исходник

{"role":"student","active":true}

Base64

eyJyb2xlIjoic3R1ZGVudCIsImFjdGl2ZSI6dHJ1ZX0=

Строка Base64 от JSON часто начинается с eyJ: это Base64-форма {".

Распознаём data-URL

Data URL

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgAAIAAAUAAen8GVAAAAAASUVORK5CYII=

Префикс задаёт MIME-тип (image/png) и тип кодирования (base64). После запятой идёт само содержимое файла. Удобно для крошечных картинок, которые подгружаются вместе со страницей.

Стандартный и URL-safe алфавиты

Стандартный

Pj4/Pyc+Pg==

URL-safe

Pj4_Pyc-Pg

URL-safe Base64 заменяет + на - и / на _, чтобы значение можно было вставлять прямо в URL без экранирования. JWT использует именно этот вариант.

Base64 в лентах Atom

В Atom (RFC 4287) Base64 встречается в элементе atom:content: если у него указан type с медиатипом, который не относится к тексту, HTML, XHTML или XML (например, image/png), содержимое обязано быть закодировано в Base64. Если валидатор ругается на такое содержимое, закодируйте файл здесь и вставьте результат в ленту.

Типичные ошибки при работе с Base64

  • Называть Base64 «зашифрованным». Декодировать его может кто угодно — без пароля и без ключа.
  • Забывать, что Unicode-текст нужно сначала перевести в байты UTF-8 до кодирования в Base64, иначе не-ASCII символы вернутся в искажённом виде. Если при декодировании получились «кракозябры», выберите другую кодировку текста.
  • Вручную обрезать = и скармливать результат строгому декодеру, который ждёт padding. (URL-safe декодеры обычно прощают отсутствие padding, стандартные — далеко не всегда.)
  • Встраивать большие картинки как Base64 прямо в CSS или HTML, когда обычный URL на файл будет короче, быстрее загрузится и нормально закэшируется.

FAQ по Base64

Что такое кодирование Base64?

Base64 — это кодирование, которое представляет бинарные данные печатаемым текстом с помощью алфавита из 64 символов. Используется везде, где байтам нужно пройти через чисто текстовый канал: API, JSON, JWT, email, data-URL.

Как работает Base64?

Base64 берёт 3 входных байта (24 бита) и делит их на четыре группы по 6 бит. Каждая 6-битная группа отображается в один из 64 символов. Если длина входа не кратна 3 байтам, в конец добавляется один или два символа = как padding.

Как раскодировать строку Base64?

Вставьте строку в декодер выше — на выходе получите исходный текст или файл. В коде почти везде есть встроенные средства: atob() в браузере, Buffer.from(str, 'base64') в Node.js, base64.b64decode() в Python.

Безопасен ли Base64?

Нет. Base64 — это кодирование, а не шифрование. Он создан для представления и передачи данных, а не для секретности. Если вам нужна конфиденциальность, сначала зашифруйте данные, а уже потом кодируйте получившийся шифртекст в Base64.

Почему Base64 иногда заканчивается на =?

= — это padding. На каждые 3 байта входа Base64 выдаёт 4 символа. Когда длина входа не кратна 3, в конец добавляется один или два =, чтобы итоговая длина оставалась кратной 4.

Можно ли кодировать в Base64 картинки?

Да. Байты картинки можно закодировать в Base64 и положить в URL вида data:image/png;base64,... — изображение встроится прямо в HTML, CSS или JSON, без отдельного сетевого запроса. В этом инструменте перетащите картинку на вкладку «Файл» и включите опцию data:.

Отправляются ли мои данные на сервер?

Нет. Кодирование и декодирование выполняются целиком в вашем браузере, на сервер ничего не передаётся. Размер файла ограничен 10 МБ.