logo
GeekFormat

Кодирование Base64

Текст ввода
0 символов

Бесплатный онлайн-инструмент кодирования и декодирования Base64. Поддерживает наборы символов UTF-8/ASCII/ISO-8859-1 с тремя вариантами: Standard, URL-Safe и MIME. Показывает коэффициент раздувания объема в реальном времени, а переносы строк MIME соответствуют стандарту RFC 2045.

Похожие

Варианты использования

  • Отладка JWT: декодируйте сегменты заголовка и полезной нагрузки JWT (формат Base64URL) для просмотра содержимого утверждений токена
  • Basic Auth: закодируйте username:password как учетные данные аутентификации HTTP Basic
  • Разработка OAuth: генерируйте code_verifier или проверяйте code_challenge в сценариях PKCE
  • Отладка API: кодируйте данные JSON или декодируйте содержимое полей Base64, возвращаемых API
  • Встраивание изображений Data URI: преобразуйте маленькие иконки в формат data:image/...;base64,... для встраивания в CSS/HTML
  • Кодирование вложений почты: кодируйте двоичные вложения почты в формате MIME Base64

Функции

  • Переключение Encode/Decode в один клик: свободно переключайтесь между режимами кодирования и декодирования, вывод напрямую становится вводом для поддержки циклической обработки
  • Поддержка трех наборов символов: UTF-8 (китайский/японский/emoji), ASCII, ISO-8859-1, профессиональный охват множества сценариев
  • Вывод в трех вариантах: Standard (стандартный), URL-Safe (безопасный для JWT/OAuth/PKCE), MIME (стандарт RFC 2045 с переносами на 76 символов)
  • Статистика объема в реальном времени: отображение количества символов ввода/вывода и коэффициента раздувания в реальном времени (Base64 увеличивает объем примерно на 33%)
  • Понятные сообщения об ошибках: когда символы выходят за пределы диапазона, отображаются конкретные сообщения об ошибках вместо простой ошибки
  • Перетаскиваемый разделитель: на ПК можно регулировать соотношение левой и правой областей редактирования, чтобы сосредоточиться на текущей задаче
  • Независимые вкладки для мобильных: пользователи телефонов/планшетов независимо переключаются между областью ввода и вывода для плавного опыта

Как использовать

  1. Выберите режим: нажмите Encode (кодировать) или Decode (декодировать) для изменения направления обработки
  2. Выберите вариант: Standard (стандартный), URL-Safe (JWT/OAuth), MIME (почтовый формат с переносами на 76 символов)
  3. Введите содержимое: вставьте текст или строку Base64, оно будет автоматически обработано в реальном времени
  4. Просмотрите статистику: внизу отображаются количество символов и коэффициент раздувания объема (кодирование увеличивает объем примерно на 33%)
  5. Скопируйте результат: скопируйте в один клик строку Base64 или декодированный текст

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

Кодирование Base64 — это то же самое, что и шифрование?

Нет. Base64 просто преобразует текст в другую обратимую форму представления; любой может декодировать его обратно в исходный текст. Если речь идет о конфиденциальных данных (пароли, токены), используйте настоящую схему шифрования, такую как AES. Base64 подходит только для преобразования формата данных, облегчая передачу двоичных данных через текстовые системы.

Инструмент шифрования AES

Насколько увеличивается объем после кодирования Base64?

Кодирование Base64 увеличивает объем исходных данных примерно на 33%. Это связано с тем, что каждые 3 байта (24 бита) кодируются в 4 символа Base64. Например, текст размером 100 байт после кодирования будет составлять около 133 байт. В нижней части инструмента коэффициент раздувания отображается в реальном времени, чтобы вы могли оценить размер данных. Пример: `Hello` → `SGVsbG8=` (объем +33%).

Инструмент статистики Base64

В чем разница между тремя вариантами: Standard, URL-Safe и MIME?

Standard — это стандартный Base64, который использует символы A-Z, a-z, 0-9, +, /. URL-Safe заменяет +/ на -_, что делает его подходящим для URL-параметров и токенов JWT. MIME вставляет переносы строк каждые 76 символов, соответствует стандарту передачи почты RFC 2045, подходит для вложений почты и многострочного текста.

URL-Safe Base64MIME Base64

Как декодировать заголовок или полезную нагрузку JWT?

JWT использует кодировку Base64URL (вариант URL-Safe). После выбора режима URL-Safe просто вставьте первый сегмент (заголовок) или второй сегмент (полезная нагрузка) JWT для декодирования. Обратите внимание, что третий сегмент JWT — это подпись, и его не следует декодировать или проверять здесь.

Инструмент JWT

Что такое Padding (заполнение) в Base64?

Длина результата кодирования Base64 должна быть кратна 4. Когда длина входных данных не кратна 3, конец заполняется символом =. Вариант URL-Safe не использует padding. Инструмент автоматически обрабатывает padding и также автоматически удаляет символы = при декодировании.

Инструмент Padding Base64

Почему btoa и atob в JavaScript не поддерживают китайский язык?

btoa и atob — это нативные API браузера, которые работают с набором символов Latin-1 (ISO-8859-1), где каждый символ занимает 1 байт. Китайские символы занимают 3 байта в UTF-8, поэтому их прямая передача вызовет ошибку. Решение — сначала использовать encodeURIComponent для преобразования китайского в формат %xx последовательности байтов UTF-8, затем использовать unescape для преобразования в строку Latin-1 и, наконец, использовать btoa для кодирования.

Что такое Data URI Scheme? Как встраивать изображения с помощью Base64?

Data URI — это формат URI, который позволяет встраивать данные непосредственно в URL, синтаксис: `data:[<mediatype>][;base64],<data>`. Например: `data:image/png;base64,iVBORw0KGgo...`. Часто используется для встраивания маленьких иконок, фоновых изображений CSS и т.д., сокращая количество HTTP-запросов. Но Base64 увеличивает объем на 33%, поэтому подходит только для маленьких файлов; большие файлы должны использовать обычные URL.

Инструмент Data URIBase64 в изображение

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

Base64 — это схема кодирования двоичных данных в текст, основанная на 64 печатных символах ASCII, впервые определенная RFC 2045 (стандарт MIME). Base64 преобразует каждые 3 байта (24 бита) в 4 символа Base64 (A-Z, a-z, 0-9, +, /), позволяя двоичным данным безопасно передаваться через системы, поддерживающие только текст, такие как HTTP-заголовки, полезные нагрузки JSON, XML-документы или параметры запроса URL.

**Base64 — это не шифрование**, он обеспечивает только преобразование формата данных, любой может легко его декодировать. Если вам нужно защитить конфиденциальные данные, используйте настоящую схему шифрования, такую как AES. Типичные варианты использования Base64 включают: HTTP Basic Authentication (`Authorization: Basic dXNlcjpwYXNz`), сегменты заголовка и полезной нагрузки токенов JWT (формат Base64URL), Data URI (`data:image/png;base64,...`), MIME-кодирование вложений почты и т.д.

**URL-Safe Base64** (RFC 4648 §5) заменяет +/ стандартного Base64 на -_ и обычно опускает padding =. Это позволяет закодированному результату безопасно появляться в URL, путях к файлам или полях JSON. Токены JWT, code_verifier OAuth PKCE и AWS Signature V4 используют кодировку URL-Safe Base64.

**Перенос строк MIME** — это стандарт RFC 2045, который определяет, что каждая строка не должна превышать 76 символов. Когда содержимое Base64 используется в электронной почте или определенных сценариях, требующих отображения с переносами строк, вариант MIME автоматически вставляет символы переноса строки (`\n`) каждые 76 символов. Это стандартный формат для передачи вложений электронной почты.

Инструмент использует нативные **API btoa/atob** браузера в сочетании с безопасной логикой обработки UTF-8, гарантируя, что многобайтовые символы, такие как китайский, японский и emoji, кодируются правильно. Все вычисления выполняются локально, данные не отправляются на какие-либо серверы. Откройте панель сети в инструментах разработчика браузера, чтобы убедиться, что внешние запросы отсутствуют в течение всего процесса.

术语表

RFC 4648
Официальный стандарт кодирования Base16/Base32/Base64, опубликованный IETF. Определяет два алфавита: стандартный Base64 и URL-Safe Base64, а также правила для padding, переносов строк, обработки неалфавитных символов и т.д. Является действующим стандартом де-факто для кодирования Base64, заменяя ранний RFC 3548.Инструмент URL-Safe Base64Инструмент Padding Base64
RFC 2045 (MIME)
Стандарт многоцелевых расширений интернет-почты (MIME). Впервые применил Base64 как метод кодирования передачи почтового содержимого. Устанавливает, что кодирование Base64 не должно превышать 76 символов в строке и разделяется CRLF, известный как вариант MIME Base64.Инструмент MIME Base64
Base64URL (URL-Safe Base64)
Безопасный для URL вариант, определенный в RFC 4648 §5. Заменяет + стандартного Base64 на - и / на _, и обычно опускает символ padding =. Широко используется в сценариях, таких как токены JWT, OAuth PKCE, URL-параметры и имена файлов.Инструмент URL-Safe Base64Инструмент JWT
MIME Base64
Вариант Base64, соответствующий стандарту RFC 2045, вставляющий символ переноса строки (CRLF) каждые 76 символов. В основном используется для передачи вложений электронной почты, поскольку ранний протокол SMTP имел ограничения на длину одной строки.Инструмент MIME Base64
Padding (заполнение)
Длина результата кодирования Base64 должна быть кратна 4. Когда количество входных байтов не кратно 3, конец заполняется символом =. Стандартный Base64 использует padding, Base64URL обычно его опускает.Инструмент Padding Base64
Алфавит Base64
Набор из 64 символов, используемых в кодировании Base64. Стандартный алфавит Base64: A-Z (26), a-z (26), 0-9 (10), +, /, всего 64 символа, плюс символ заполнения =.
btoa / atob
Нативные API браузера для кодирования/декодирования Base64. btoa (binary to ASCII) используется для кодирования, atob (ASCII to binary) для декодирования. Обратите внимание, что эти API поддерживают только набор символов Latin-1. Для обработки китайского языка их необходимо сочетать с перекодировкой UTF-8.
Data URI Scheme
Формат URI, который позволяет встраивать маленькие файлы непосредственно в URL, формат: data:[<mediatype>][;base64],<data>. Часто используется для встраивания маленьких иконок и фоновых изображений CSS для сокращения HTTP-запросов.Инструмент Data URIBase64 в изображение
HTTP Basic Authentication
Метод аутентификации в протоколе HTTP. Имя пользователя и пароль объединяются двоеточием, кодируются в Base64 и передаются в заголовке запроса Authorization. Формат: Authorization: Basic <base64(username:password)>.Конструктор заголовков Auth
Коэффициент раздувания Base64
Доля, на которую увеличивается объем данных после кодирования Base64. Каждые 3 байта (24 бита) кодируются в 4 символа Base64, поэтому объем увеличивается примерно на 33% (4/3 ≈ 1,333). С padding коэффициент раздувания немного выше.

Сравнение трех вариантов Base64

ХарактеристикаStandardURL-SafeMIME
Специальные символы+ /- _+ /
Padding(=)ИспользуетсяОбычно опускаетсяИспользуется
Переносы строкНетНетПеренос каждые 76 символов
СтандартRFC 4648 §4RFC 4648 §5RFC 2045
Типичные сценарииData URI, общее кодированиеJWT, URL-параметры, имена файловВложения почты, передача SMTP

Сравнительная таблица кодировок серии Base

КодировкаКол-во символовОсобенности набора символовРаздувание объемаТипичное использование
Base16 (Hex)160-9, A-F100%Отладка, отображение хешей
Base3232A-Z, 2-7(заглавные без путаницы)60%DNS, ключи TOTP, QR-коды
Base5858Исключает легко спутываемые символы 0/O/I/l38%Адреса Bitcoin, криптовалюты
Base6262A-Z, a-z, 0-934%Сокращатели URL, кодирование ID
Base6464A-Z, a-z, 0-9, +, /33%Data URI, MIME, JWT(вариант URL-Safe)

Code Examples

Кодирование Base64 в JavaScript (поддерживает китайский UTF-8)

// 编码(支持 UTF-8 中文)
function b64Encode(str) {
  return btoa(unescape(encodeURIComponent(str)));
}

// 解码(支持 UTF-8 中文)
function b64Decode(str) {
  return decodeURIComponent(escape(atob(str)));
}

// URL-Safe 编码(用于 JWT / OAuth)
function b64UrlEncode(str) {
  return btoa(unescape(encodeURIComponent(str)))
    .replace(/\+/g, '-')
    .replace(/\//g, '_')
    .replace(/=+$/, '');
}

console.log(b64Encode('Hello 世界')); // SGVsbG8g5LiW55WM
console.log(b64Decode('SGVsbG8g5LiW55WM')); // Hello 世界

Кодирование Base64 в Python

import base64

# Standard 编码(UTF-8)
encoded = base64.b64encode('Hello 世界'.encode('utf-8'))
print(encoded.decode())  # SGVsbG8g5LiW55WM

# Standard 解码
decoded = base64.b64decode(encoded).decode('utf-8')
print(decoded)  # Hello 世界

# URL-Safe 编码(用于 JWT / OAuth)
url_safe = base64.urlsafe_b64encode('Hello 世界'.encode('utf-8'))
print(url_safe.decode())  # SGVsbG8g5LiW55WM(无 padding 需手动去除)

# 去除 padding(JWT 标准做法)
url_safe_no_pad = url_safe.decode().rstrip('=')
print(url_safe_no_pad)

Кодирование Base64 в Java

import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class Base64Example {
    public static void main(String[] args) {
        String text = "Hello 世界";

        // Standard 编码
        String encoded = Base64.getEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(encoded); // SGVsbG8g5LiW55WM

        // Standard 解码
        String decoded = new String(
            Base64.getDecoder().decode(encoded), StandardCharsets.UTF_8);
        System.out.println(decoded); // Hello 世界

        // URL-Safe 编码(用于 JWT / URL)
        String urlSafe = Base64.getUrlEncoder().withoutPadding()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
        System.out.println(urlSafe);

        // MIME 编码(76字符换行)
        String mime = Base64.getMimeEncoder()
            .encodeToString(text.getBytes(StandardCharsets.UTF_8));
    }
}

Authoritative References