RUV CalculatorКодирование и декодирование Base64https://calc.ruvlabs.com/ru/c/base64

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

Из текста в Base64 и обратно

Результат

Подробности
Длина

Как это выглядит в Base64?

SGVsbG8sIOyViOuFle2VmOyEuOyalA==

Пример с начальными значениями. Измените поля выше, чтобы получить свой результат.

Base64 — это запись, а не шифрование

Base64 переписывает произвольные байты, пользуясь только A-Z, a-z, 0-9 и двумя символами. Три байта делятся на четыре группы по шесть бит, каждая из которых становится одним знаком, поэтому вывод примерно на треть длиннее ввода. Знаки равенства дополняют последнюю неполную группу.

Его назначение — проводить двоичные данные по каналам, принимающим только текст: вложения в письмах, изображения, встроенные прямо в страницу, учётные данные в заголовке HTTP. Это не даёт промежуточным системам испортить байты, которых они не ждали.

Многобайтовые символы сначала переводятся в UTF-8 и кодируются уже оттуда. Слово «мир» — шесть байт, потому что каждая кириллическая буква занимает два, и в Base64 оно даёт восемь символов, как шесть латинских букв. Поэтому длина результата ничего надёжного не говорит о числе исходных символов.

Не принимайте кодирование за защиту

Base64 разворачивает обратно кто угодно и мгновенно. Хранение пароля или токена в Base64 их не скрывает, а лишь делает неудобными для чтения, и они полностью открыты, как только попадают в журнал или резервную копию. Значениям, которые должны остаться тайными, нужно шифрование или хеширование.

Вставив сырой Base64 в URL, вы его сломаете. Знаки плюс и косая черта из стандартного набора значат в веб-адресе другое, поэтому для ссылок нужен безопасный вариант, где эти два знака заменены другими.

Неудача при декодировании — обычно вопрос длины или дополнения. Длина строки Base64 должна быть кратна четырём, а переводы строк и случайные пробелы, подхваченные при копировании, заставят разборщик её отвергнуть.

Частые вопросы

Base64 — это шифрование?

Нет, это кодирование, а не шифрование. Обратить его может кто угодно, поэтому оно ничего не защищает. Его задача — провести двоичные данные в целости по каналам, где допустим только текст: почта, JSON, адреса.

Почему размер вырастает?

Потому что три байта превращаются в четыре символа, то есть примерно на 33 % больше: данные режутся на шестибитные группы, которым сопоставлены 64 символа. Именно поэтому картинка, вшитая в HTML как Base64, весит больше, чем ссылка на файл.

Что означают знаки равенства в конце?

Это заполнение. Когда длина входа не кратна трём, они дополняют последнюю четвёрку символов: два, если остался один байт, и один, если осталось два.

Расчёт выполняется в этом браузере. Проверьте введённые значения, прежде чем полагаться на результат.