Кодировщик и декодировщик Base64: Конвертировать текст в/из Base64

Бесплатный онлайн инструмент для кодирования текста в Base64 или декодирования строк Base64 обратно в текст. Поддерживает стандартное и безопасное для URL кодирование Base64 с мгновенным преобразованием.

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

Преобразуйте текст в кодировку Base64 и обратно

Копировать
📚

Документация

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

Введение

Base64 — это схема кодирования бинарных данных в текстовом формате, которая представляет бинарные данные в виде ASCII-строки. Она предназначена для передачи данных, хранящихся в бинарных форматах, по каналам, которые надежно поддерживают только текстовое содержимое. Кодирование Base64 преобразует бинарные данные в набор из 64 символов (отсюда и название), которые можно безопасно передавать по текстовым протоколам без повреждения данных.

Набор символов Base64 состоит из:

  • Заглавные буквы A-Z (26 символов)
  • Строчные буквы a-z (26 символов)
  • Цифры 0-9 (10 символов)
  • Два дополнительных символа, обычно "+" и "/" (2 символа)

Этот инструмент позволяет вам легко кодировать текст в формат Base64 или декодировать строки Base64 обратно в их исходный текст. Он особенно полезен для разработчиков, ИТ-специалистов и всех, кто работает с данными, которые необходимо безопасно передавать через текстовые каналы.

Как работает кодирование Base64

Процесс кодирования

Кодирование Base64 работает путем преобразования каждой группы из трех байтов (24 бита) бинарных данных в четыре символа Base64. Процесс включает следующие шаги:

  1. Преобразуйте входной текст в его бинарное представление (используя кодировку ASCII или UTF-8)
  2. Группируйте бинарные данные в блоки по 24 бита (3 байта)
  3. Разделите каждый 24-битный блок на четыре 6-битные группы
  4. Преобразуйте каждую 6-битную группу в соответствующий символ Base64

Когда длина входных данных не делится на 3, добавляется дополнение с символами "=" для поддержания соотношения 4:3 между длиной выходных и входных данных.

Математическое представление

Для последовательности байтов b1,b2,b3b_1, b_2, b_3 соответствующие символы Base64 c1,c2,c3,c4c_1, c_2, c_3, c_4 вычисляются следующим образом:

c1=Base64[(b1>>2)]c_1 = \text{Base64}[(b_1 >> 2)]
c2=Base64[((b1&3)<<4)(b2>>4)]c_2 = \text{Base64}[((b_1 \& 3) << 4) | (b_2 >> 4)]
c3=Base64[((b2&15)<<2)(b3>>6)]c_3 = \text{Base64}[((b_2 \& 15) << 2) | (b_3 >> 6)]
c4=Base64[(b3&63)]c_4 = \text{Base64}[(b_3 \& 63)]

Где Base64[i]\text{Base64}[i] представляет собой ii-й символ в алфавите Base64.

Процесс декодирования

Декодирование Base64 обращает процесс кодирования:

  1. Преобразуйте каждый символ Base64 в его 6-битное значение
  2. Объедините эти 6-битные значения
  3. Группируйте биты в 8-битные блоки (байты)
  4. Преобразуйте каждый байт в соответствующий символ

Дополнение

Когда количество байтов для кодирования не делится на 3, применяется дополнение:

  • Если остается один байт, он преобразуется в два символа Base64, за которыми следуют "=="
  • Если остается два байта, они преобразуются в три символа Base64, за которыми следует "="

Пример

Давайте закодируем текст "Hello" в Base64:

  1. ASCII представление "Hello": 72 101 108 108 111
  2. Бинарное представление: 01001000 01100101 01101100 01101100 01101111
  3. Группировка в 6-битные блоки: 010010 000110 010101 101100 011011 000110 1111
  4. Последний блок имеет только 4 бита, поэтому мы дополняем нулями: 010010 000110 010101 101100 011011 000110 111100
  5. Преобразование в десятичное: 18, 6, 21, 44, 27, 6, 60
  6. Поиск в алфавите Base64: S, G, V, s, b, G, 8
  7. Результат: "SGVsbG8="

Обратите внимание на дополнение "=" в конце, потому что длина входных данных (5 байт) не делится на 3.

Формула

Общая формула для вычисления длины закодированной строки Base64:

encoded_length=4×input_length3\text{encoded\_length} = 4 \times \lceil \frac{\text{input\_length}}{3} \rceil

Где x\lceil x \rceil представляет собой функцию округления вверх (округление до ближайшего целого числа).

Сценарии использования

Кодирование Base64 широко используется в различных приложениях:

  1. Вложения в электронную почту: MIME (расширения многоцелевой интернет-почты) использует Base64 для кодирования бинарных вложений в электронной почте.

  2. URL-данные: Встраивание небольших изображений, шрифтов или других ресурсов непосредственно в HTML, CSS или JavaScript с использованием схемы URL data:.

  3. API-коммуникации: Безопасная передача бинарных данных в JSON-данных или других текстовых форматах API.

  4. Хранение бинарных данных в текстовых форматах: Когда бинарные данные необходимо хранить в XML, JSON или других текстовых форматах.

  5. Системы аутентификации: Базовая аутентификация в HTTP использует кодирование Base64 (хотя это не для безопасности, а просто для кодирования).

  6. Криптография: В рамках различных криптографических протоколов и систем, часто для кодирования ключей или сертификатов.

  7. Значения cookie: Кодирование сложных структур данных для хранения в cookie.

Альтернативы

Хотя Base64 широко используется, существуют альтернативы, которые могут быть более подходящими в определенных ситуациях:

  1. Безопасный для URL Base64: Вариант, который использует "-" и "_" вместо "+" и "/", чтобы избежать проблем с кодированием URL. Полезно для данных, которые будут включены в URL.

  2. Base32: Использует набор из 32 символов, что приводит к более длинному выходу, но с лучшей читаемостью для человека и нечувствительностью к регистру.

  3. Шестнадцатеричное кодирование: Простое преобразование в шестнадцатеричный формат, который менее эффективен (удваивает размер), но очень прост и широко поддерживается.

  4. Бинарная передача: Для больших файлов или когда эффективность имеет решающее значение, предпочтительнее прямой бинарный передачный протокол, такой как HTTP с соответствующими заголовками Content-Type.

  5. Сжатие + Base64: Для больших текстовых данных сжатие перед кодированием может уменьшить увеличение размера.

  6. Сериализация JSON/XML: Для структурированных данных использование родной сериализации JSON или XML может быть более подходящим, чем кодирование Base64.

История

Кодирование Base64 имеет свои корни в ранних вычислительных и телекоммуникационных системах, где бинарные данные необходимо было передавать по каналам, предназначенным для текста.

Официальная спецификация Base64 была впервые опубликована в 1987 году в RFC 989, который определял защищенную почту (PEM). Это было позже обновлено в RFC 1421 (1993) и RFC 2045 (1996, как часть MIME).

Термин "Base64" происходит от того, что кодирование использует 64 различных ASCII-символа для представления бинарных данных. Этот выбор 64 символов был преднамеренным, так как 64 является степенью двойки (2^6), что делает преобразование между бинарными данными и Base64 эффективным.

Со временем возникло несколько вариантов Base64:

  • Стандартный Base64: Как определено в RFC 4648, использует A-Z, a-z, 0-9, +, / и = для дополнения
  • Безопасный для URL Base64: Использует - и _ вместо + и / для избежания проблем с кодированием URL
  • Безопасный для имени файла Base64: Похож на безопасный для URL, предназначен для использования в именах файлов
  • Модифицированный Base64 для IMAP: Используется в протоколе IMAP с другим набором специальных символов

Несмотря на то, что ему более трех десятилетий, Base64 остается основным инструментом в современном вычислении, особенно с ростом веб-приложений и API, которые сильно зависят от текстовых форматов данных, таких как JSON.

Примеры кода

Вот примеры кодирования и декодирования Base64 на различных языках программирования:

1// Кодирование/декодирование Base64 на JavaScript
2function encodeToBase64(text) {
3  return btoa(text);
4}
5
6function decodeFromBase64(base64String) {
7  try {
8    return atob(base64String);
9  } catch (e) {
10    throw new Error("Недопустимая строка Base64");
11  }
12}
13
14// Пример использования
15const originalText = "Hello, World!";
16const encoded = encodeToBase64(originalText);
17console.log("Закодировано:", encoded);  // SGVsbG8sIFdvcmxkIQ==
18
19try {
20  const decoded = decodeFromBase64(encoded);
21  console.log("Декодировано:", decoded);  // Hello, World!
22} catch (error) {
23  console.error(error.message);
24}
25

Пограничные случаи и соображения

При работе с кодированием и декодированием Base64 имейте в виду эти важные соображения:

  1. Юникод и не-ASCII символы: При кодировании текста с не-ASCII символами убедитесь, что используется правильная кодировка символов (обычно UTF-8) перед кодированием Base64.

  2. Дополнение: Стандартный Base64 использует дополнение с символами "=" для обеспечения того, чтобы длина выходных данных была кратна 4. Некоторые реализации позволяют опускать дополнение, что может вызвать проблемы совместимости.

  3. Перенос строк: Традиционные реализации Base64 вставляют переносы строк (обычно каждые 76 символов) для читаемости, но современные приложения часто опускают их.

  4. Безопасный для URL Base64: Стандартный Base64 использует "+" и "/" символы, которые имеют специальные значения в URL. Для контекстов URL используйте безопасный для URL Base64, который заменяет их на "-" и "_".

  5. Пробелы: При декодировании некоторые реализации являются снисходительными и игнорируют пробелы, в то время как другие требуют точного ввода.

  6. Увеличение размера: Кодирование Base64 увеличивает размер данных примерно на 33% (4 выходных байта на каждые 3 входных байта).

  7. Производительность: Кодирование/декодирование Base64 может быть вычислительно затратным для очень больших данных. Рассмотрите возможность потоковых подходов для больших файлов.

Ссылки

  1. RFC 4648 - Кодировки данных Base16, Base32 и Base64
  2. RFC 2045 - MIME Часть первая: Формат интернет-сообщений
  3. MDN Web Docs: Кодирование и декодирование Base64
  4. Base64 - Википедия
  5. MIME - Википедия
🔗

Связанные инструменты

Откройте больше инструментов, которые могут быть полезны для вашего рабочего процесса

Декодер и просмотрщик изображений Base64 | Конвертировать Base64 в изображения

Попробуйте этот инструмент

Конвертер двоичных и десятичных чисел: Конвертация между системами счисления

Попробуйте этот инструмент

Конвертер числовых систем: двоичная, десятичная, шестнадцатеричная и пользовательские системы

Попробуйте этот инструмент

Инструмент для генерации и проверки IBAN для тестирования и верификации

Попробуйте этот инструмент

Инструмент инвертирования текста: Реверсировать порядок символов в любой строке

Попробуйте этот инструмент

Тестировщик и валидатор регулярных выражений: тестируйте, выделяйте и сохраняйте шаблоны

Попробуйте этот инструмент

Конвертер временных единиц: годы, дни, часы, минуты, секунды

Попробуйте этот инструмент

Генератор случайных API-ключей: создайте безопасные строки длиной 32 символа

Попробуйте этот инструмент

Форматировщик и улучшитель JSON: Красивый вывод JSON с отступами

Попробуйте этот инструмент

Инструмент для минификации CSS: Оптимизируйте и сжимайте CSS-код онлайн

Попробуйте этот инструмент