CoderTools

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

Быстрое кодирование и декодирование Base64 строк с поддержкой текста и файлов

Кодировка

Что такое Base64?

Base64 — это схема кодирования, которая представляет двоичные данные с использованием 64 печатаемых символов ASCII. Эти символы включают заглавные и строчные буквы, цифры и некоторые специальные символы. Base64 широко используется в сценариях, где двоичные данные необходимо передавать по текстовым каналам, таким как вложения электронной почты и параметры URL. Схема кодирования Base64 была первоначально определена в RFC 4648 и спецификации MIME (RFC 2045).

Принцип алгоритма кодирования Base64:

Процесс кодирования Base64 можно разделить на следующие шаги:

  1. Разделите входные данные на группы по 3 байта каждая
  2. Переупорядочьте эти 3 байта (24 бита) в 4 группы по 6 бит каждая
  3. Сопоставьте каждое 6-битное значение (диапазон 0-63) как индекс с набором символов Base64
  4. Если в последней группе меньше 3 байт, заполните нулевыми битами и добавьте соответствующее количество знаков равенства (=) в качестве заполнения в конце результата

Набор символов Base64: A-Z, a-z, 0-9, +, /

Символ заполнения: =

Пример преобразования:

ASCII-код для текста "Man": 77 97 110
Двоичное представление: 01001101 01100001 01101110
Перегруппировано по 6 бит: 010011 010110 000101 101110
Десятичные значения: 19 22 5 46
Результат Base64: T W F u

Упрощённая реализация на JavaScript:

// Base64 encoding implementation example (simplified)
function base64Encode(str) {
    // Base64 character set
    const base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    let result = '';
    let i = 0;

    // Process every 3 characters as a group
    while (i < str.length) {
        const char1 = str.charCodeAt(i++);
        const char2 = i < str.length ? str.charCodeAt(i++) : 0;
        const char3 = i < str.length ? str.charCodeAt(i++) : 0;
        
        // Convert 3 8-bit bytes into 4 6-bit indices
        const triplet = (char1 << 16) + (char2 << 8) + char3;
        
        // Extract 4 6-bit values from the triplet
        const index1 = (triplet >> 18) & 0x3F;
        const index2 = (triplet >> 12) & 0x3F;
        const index3 = (triplet >> 6) & 0x3F;
        const index4 = triplet & 0x3F;
        
        // Add padding based on the original data length
        if (i - 3 > str.length) {
            result += base64chars[index1] + base64chars[index2] + '==';
        } else if (i - 2 > str.length) {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + '=';
        } else {
            result += base64chars[index1] + base64chars[index2] + base64chars[index3] + base64chars[index4];
        }
    }
  
    return result;
}

Распространённые применения:

  • Кодирование вложений электронной почты (стандарт MIME)
  • Безопасная передача данных в URL (используя вариант Base64url, где '+' и '/' заменяются на '-' и '_')
  • Встраивание двоичных изображений в HTML или CSS (схема URI данных)
  • Хранение простых данных в виде одной строки (например, компонентов токена JWT)
  • Включение двоичных данных в XML и JSON (избегая проблем с экранированием специальных символов)

Расширенные функции

Поддержка шестнадцатеричного формата

Наш инструмент поддерживает ввод и вывод в шестнадцатеричном формате, что полезно для разработчиков, работающих с двоичными данными в программном коде.

  • Ввод: Принимает hex-формат вида 0x11,0x22,0x33 или просто 112233
  • Вывод: Преобразует декодированный Base64 обратно в hex-формат для встраивания в код

Поддержка кодировок

Различные наборы символов кодируют текст в байты по-разному. Наш инструмент поддерживает несколько кодировок для обработки различных текстовых кодировок:

  • UTF-8: Универсальная кодировка с поддержкой всех символов Unicode (по умолчанию)
  • ASCII: 7-битная кодировка с поддержкой базовых английских символов (0-127)
  • Latin-1 (ISO-8859-1): 8-битная кодировка с поддержкой символов Западной Европы (ISO-8859-1)
  • UTF-16: 16-битная кодировка, обычно используемая Windows и Java (Little Endian)

Важные замечания:

  • Данные, закодированные в Base64, обычно на 33% больше исходных данных (потому что 3 байта становятся 4 символами)
  • Base64 не является алгоритмом шифрования, это всего лишь метод кодирования, и он не обеспечивает безопасность
  • Кодирование Base64 больших файлов может потреблять значительную память и время обработки
  • Варианты Base64, безопасные для URL, используют разные наборы символов, чтобы избежать проблем с кодированием URL
  • Стандартный Base64 может включать разрывы строк для ограничения длины строки, что требует дополнительной обработки в некоторых приложениях

Сравнение Base64 с другими кодировками:

Тип кодирования Характеристики Основное применение
Base64 Использует 64 символа ASCII для представления двоичных данных Вложения электронной почты, передача двоичных данных в тексте
URL-кодирование Преобразует специальные символы в формат %XX Передача параметров URL, отправка форм
Шестнадцатеричное кодирование Каждый байт представлен двумя шестнадцатеричными символами Представление хеш-значений, визуализация двоичных данных

Для получения дополнительной официальной информации о Base64 обратитесь к следующим ресурсам: RFC 4648 (Стандарт Base64) | Википедия: Base64 | RFC 2045 (Спецификация MIME)