Кодирование / Декодирование Base64
Преобразуйте текст в Base64 и декодируйте его обратно прямо в браузере. Безопасно для UTF-8 с дополнительным вариантом URL-safe — данные никогда не загружаются на сервер.
Ввод
0 строк · 0 символов
Режим
URL-safe
Как пользоваться Кодирование / Декодирование Base64
- 1
Выберите кодирование или декодирование
Установите режим «Кодировать», чтобы превратить текст в Base64, или «Декодировать», чтобы превратить строку Base64 обратно в читаемый текст.
- 2
Введите данные
Введите или вставьте текст или Base64 в панель ввода, при желании включите режим URL-safe для алфавита, безопасного для URL и имён файлов.
- 3
Преобразуйте
Нажмите «Преобразовать», чтобы обработать данные локально в браузере с полной поддержкой UTF-8 и эмодзи.
- 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-безопасному алфавиту.
Часто задаваемые вопросы
В чём здесь разница между кодированием и декодированием?
Что делает параметр URL-safe?
Обрабатываются ли эмодзи и не английские символы?
Что произойдёт, если при декодировании вставить недопустимый Base64?
Отправляются ли мои данные куда-либо?
Похожие инструменты
Продолжайте работу с этими удобными инструментами