bitlvl
RU

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

Вставьте текст или Base64 в любое из полей; второе обновится. Перетащите файл, чтобы закодировать его, или декодируйте Base64 в файл. Вся работа выполняется в вашем браузере.

Перетащите сюда файл, чтобы закодировать его, или

Результаты и сообщения этого инструмента выводятся на английском языке.

Для чего нужен Base64

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

  1. Возьмите 3 байта: 24 бита.
  2. Разбейте их на четыре группы по 6 бит (значения 0–63).
  3. Замените каждую группу соответствующим символом алфавита.
  4. Если длина входных данных не кратна 3, дополните последнюю группу нулевыми битами и добавьте один или два знака =.

hi — это 0x68 0x69 = 01101000 01101001; перегруппированные как 011010 000110 1001(00) это 26, 6, 36 → aGk, плюс один = за недостающий байт: aGk=.

Стандартный и URL-safe

Символы + и / имеют особое значение в URL и именах файлов, поэтому RFC 4648 §5 определяет второй алфавит, который использует вместо них - и _, обычно без padding. JWT, токены OAuth и многие API используют эту форму «base64url». Декодер здесь принимает обе, с padding и без, и игнорирует переводы строк.

Это не шифрование

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

Кодировка текста

Base64 работает с байтами, поэтому текст сначала нужно превратить в байты. Этот инструмент использует UTF-8 — именно её ожидают веб-API, JSON и почти всё современное ПО. Декодированный результат, не являющийся корректным UTF-8, показывается в hex вместо нечитаемых символов.

Вопросы

Почему мой Base64 заканчивается на = или ==?

Это padding. Длина входных данных не была кратна 3 байтам, поэтому последний блок дополнен. Один = означает, что в последней группе было два байта; == — что один. Многие декодеры принимают ввод без padding, а URL-safe вариант обычно его опускает.

Base64 безопасен?

Нет. Это кодирование, а не шифрование; любой может его обратить. Он защищает данные от искажения при передаче, а не от прочтения.

Насколько Base64 увеличивает файл?

Примерно на 33% (4 байта на выходе на каждые 3 байта на входе), плюс ещё до 3%, если строки переносятся для MIME.

Почему декодированный текст нечитаем?

Обычно данные вообще не были текстом (изображение, сжатый блоб), либо текст был в кодировке, отличной от UTF-8. Посмотрите на hex-представление: 89 50 4E 47 в начале — это PNG, 1F 8B — gzip, 25 50 44 46 — PDF.

Что такое data: URL?

URL, который содержит сам файл, например data:image/png;base64,iVBOR… Он позволяет встраивать небольшие изображения или шрифты прямо в HTML или CSS. Кодировщик выдаёт такой URL, когда вы перетаскиваете файл.

Этот инструмент загружает мой файл на сервер?

Нет. Файл читается JavaScript в вашем браузере и никуда не отправляется. Перезагрузите страницу — и он исчезнет.