T

Text Machine

Мощные текстовые инструменты прямо в браузере

Кодирование / Декодирование Base64

Преобразуйте текст в Base64 и декодируйте его обратно прямо в браузере. Безопасно для UTF-8 с дополнительным вариантом URL-safe — данные никогда не загружаются на сервер.

Ввод

0 строк · 0 символов

Режим

URL-safe

Как пользоваться Кодирование / Декодирование Base64

  1. 1

    Выберите кодирование или декодирование

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

  2. 2

    Введите данные

    Введите или вставьте текст или Base64 в панель ввода, при желании включите режим URL-safe для алфавита, безопасного для URL и имён файлов.

  3. 3

    Преобразуйте

    Нажмите «Преобразовать», чтобы обработать данные локально в браузере с полной поддержкой UTF-8 и эмодзи.

  4. 4

    Скопируйте или поменяйте местами

    Скопируйте результат или используйте «Поменять местами», чтобы перенести вывод обратно во ввод и переключить режим для быстрого обратного преобразования.

Полное руководство по кодированию Base64

Что такое Base64 на самом деле

Base64 — это схема кодирования двоичных данных в текст: она представляет произвольные двоичные данные, используя всего 64 печатаемых символа ASCII, которые без потерь проходят через системы, рассчитанные на обычный текст. Стандартный алфавит, определённый в RFC 4648, состоит из 26 заглавных букв A-Z, 26 строчных букв a-z, десяти цифр 0-9 и двух символов + и /. Это и есть 64 символа, чего ровно хватает, чтобы представить шесть бит данных на символ, потому что два в шестой степени равно 64.

Название следует понимать буквально. Подобно тому как система с основанием 10 использует десять цифровых знаков, а система с основанием 16 (шестнадцатеричная) — шестнадцать, система с основанием 64 использует шестьдесят четыре. Кодирование полностью обратимо и не теряет данные: любые байты, которые вы закодировали, при декодировании возвращаются байт в байт идентичными, и в этом весь смысл.

Зачем существует Base64

Многие каналы были рассчитаны на передачу текста, а не сырых байтов, и они портят всё, что выходит за пределы диапазона печатаемого ASCII. Классический пример — электронная почта: изначальный стандарт SMTP был семибитным протоколом, который мог искажать или отбрасывать старший бит двоичных данных, поэтому MIME использует Base64, чтобы безопасно передавать вложения с изображениями и файлами. Та же проблема возникает всякий раз, когда двоичные данные должны проехать внутри чего-то текстового.

Вы встречаете Base64 постоянно, сами того не замечая. Data URI встраивают изображения прямо в HTML и CSS в виде data:image/png;base64,iVBORw0K..., так что маленькой иконке не нужен отдельный запрос. JSON Web Tokens (JWT) — это три сегмента Base64url, соединённые точками. HTTP Basic-аутентификация передаёт Base64 от username:password. Браузеры предоставляют его через встроенные функции btoa и atob, и это стандартный способ упаковать двоичную нагрузку внутрь JSON, XML или URL.

Как работает сопоставление 3 байтов в 4 символа

Base64 обрабатывает входные данные по три байта за раз. Три байта — это 24 бита, а 24 ровно делятся на четыре группы по шесть бит. Каждая шестибитная группа — это число от 0 до 63, которое превращается в один символ алфавита. Поэтому каждые 3 байта входных данных всегда дают ровно 4 выходных символа, и именно поэтому Base64 раздувает данные примерно на треть: закодированная форма составляет около 133% размера оригинала.

Важна именно позиция в алфавите. Индекс 0 — это A, индекс 25 — Z, индекс 26 — a, индекс 51 — z, индекс 52 — 0, индекс 61 — 9, индекс 62 — +, а индекс 63 — /. Чтобы прочитать закодированную строку вручную, вы сопоставляете каждый символ обратно с его индексом, записываете этот индекс шестью битами, объединяете все биты и нарезаете поток обратно на восьмибитные байты.

Разбор примера: кодирование "Man"

Возьмём три буквы M, a, n. Их байтовые значения ASCII — 77, 97 и 110, что в двоичном виде равно 01001101, 01100001 и 01101110. Объедините эти 24 бита в один поток: 010011010110000101101110. Теперь нарежьте его на четыре шестибитные группы: 010011, 010110, 000101, 101110.

Эти группы — числа 19, 22, 5 и 46. Поиск каждого из них в алфавите даёт T (индекс 19), W (индекс 22), F (индекс 5) и u (индекс 46). Итак, "Man" кодируется в "TWFu" — чистое преобразование трёх байтов в четыре символа без какого-либо дополнения. Декодирование просто выполняет эти шаги в обратном порядке.

Дополнение и знак равенства

Входные данные не всегда кратны трём байтам, поэтому Base64 нужен способ обозначить остаток. Когда остаётся один байт, он кодируется в два символа, за которыми следуют два знака дополнения (==); когда остаётся два байта, они кодируются в три символа, за которыми следует один знак дополнения (=). Символ дополнения не несёт данных; он лишь сообщает декодеру, сколько настоящих байтов представляет последняя группа.

Например, одна буква "M" (байт 77, двоичное 01001101) дополняется до шести бит как 010011 и 010000, давая T и Q, а затем завершается == и образует "TQ==". Слово "Ma" (два байта) кодируется в "TWE=" с одним завершающим знаком равенства. Подсчёт знаков равенства в конце любой строки Base64 подсказывает, была ли исходная длина кратна трём.

URL-безопасный вариант

Стандартные символы + и / создают проблемы в местах, где у них уже есть собственное значение. Косая черта разделяет сегменты пути в URL, а знак плюс интерпретируется как пробел в строках запроса, закодированных как форма, поэтому обычное значение Base64 может сломаться, попав в ссылку или имя файла. URL-безопасный алфавит, тоже из RFC 4648, решает это, заменяя + на - (дефис) и / на _ (подчёркивание).

Включение URL-безопасного режима в этом инструменте даёт именно этот вариант, а также убирает завершающее дополнение =, поскольку знаки равенства в URL точно так же требуют экранирования. Результат напрямую вставляется в параметры запроса, сегменты пути, cookie и имена файлов. Именно это кодирование используют JWT и многие веб-API. Только помните, что URL-безопасный ввод нужно декодировать URL-безопасным декодером, потому что символы - и _ недопустимы в стандартном алфавите.

Base64 — это кодирование, а не шифрование

Это самый важный и самый часто понимаемый неверно факт о Base64. Кодирование скрывает данные только от невооружённого глаза; оно не обеспечивает никакой конфиденциальности. Нет ни ключа, ни секрета, поэтому кто угодно может мгновенно декодировать строку Base64 любым инструментом, включая этот. Воспринимать Base64 как способ спрятать пароли, API-ключи или личные данные — серьёзная ошибка безопасности.

Base64 решает задачу транспортировки, а не секретности: он делает двоичные данные безопасными для перемещения по текстовым каналам. Если вам нужна настоящая защита, сначала зашифруйте данные реальным алгоритмом, например AES, и только потом закодируйте шифртекст в Base64, если он к тому же должен путешествовать как текст. Кодирование и шифрование — это разные задачи.

Частые ошибки и практические советы

Самая частая ошибка — путаница с кодировкой символов. Сам Base64 знает только байты, поэтому, прежде чем кодировать текст, вы должны решить, как этот текст превращается в байты. Этот инструмент использует UTF-8, и именно поэтому буквы с диакритическими знаками и эмодзи корректно проходят туда и обратно; кодирование той же строки в другой кодировке где-то ещё даст другой Base64. Вторая распространённая ловушка — пробельные символы: переносы строк, вставляемые некоторыми кодировщиками (MIME переносит на 76 символах), не являются частью данных и должны быть удалены перед декодированием, хотя строгие декодеры могут их отвергнуть.

К другим подводным камням относятся смешивание стандартного и URL-безопасного алфавитов, забывчивость о том, что строке без дополнения может потребоваться восстановить дополнение, прежде чем её примет строгий декодер, и предположение, что Base64 экономит место, — он этого никогда не делает, он всегда увеличивает нагрузку примерно на треть. Когда декодирование здесь не удаётся, проверьте в первую очередь случайный пробел, отсутствующий знак равенства или символ - либо _, относящийся к URL-безопасному алфавиту.

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

В чём здесь разница между кодированием и декодированием?
Кодирование преобразует обычный текст в его представление в Base64, а декодирование берёт строку Base64 и восстанавливает исходный текст. Переключайтесь между ними переключателем режима.
Что делает параметр URL-safe?
URL-safe Base64 заменяет символы + и / на - и _ и убирает завершающее заполнение =, поэтому результат можно вставлять прямо в URL, строки запросов и имена файлов без экранирования.
Обрабатываются ли эмодзи и не английские символы?
Да. Текст кодируется как UTF-8 перед преобразованием, поэтому буквы с диакритикой, нелатинские письменности и эмодзи точно сохраняются при кодировании и декодировании.
Что произойдёт, если при декодировании вставить недопустимый Base64?
Инструмент обнаруживает некорректный Base64 и показывает сообщение о недопустимом вводе вместо того, чтобы выдавать мусор, предлагая проверить опечатки или переключиться в режим кодирования.
Отправляются ли мои данные куда-либо?
Нет. Преобразователь полностью работает в вашем браузере на JavaScript, поэтому текст и строки Base64 никогда не покидают ваше устройство, что делает его безопасным для конфиденциальных или закрытых данных.

Похожие инструменты

Продолжайте работу с этими удобными инструментами

URL Encoder / Decoder

Декодер JWT

Кодировщик / Декодировщик HTML

Конвертер HTML в Текст

Форматтер JSON

Тестер регулярных выражений