Skip to main content

Что такое Base64?

Base64 - это метод для преобразования произвольных двоичных данных, данных, состоящих не только из простых текстовых символов, в текстовое сообщение, которое затем может быть передано через компьютерную сеть. Это то, что называется кодированием. Хотя вывод сообщения в кодировке base64 не совсем понятен человеку, он по-прежнему состоит из 64 общих символов английского языка, отсюда и название, с дополнительным 65-м символом, используемым для специальных целей.

Идея, лежащая в основе base64, возникла, когда возникла необходимость получать больше, чем простые текстовые символы, через сетевые коммуникации, например электронную почту. Первые сообщения электронной почты начинались как символы, закодированные в Американском стандартном коде для обмена информацией (ASCII), метод кодирования, используемый в компьютерах для представления символов алфавита английского языка в виде текста на дисплеях или принтерах. Поскольку дополнительная двоичная информация должна была пройти, были разработаны новые схемы кодирования.

Метод кодирования base64 был впервые описан в том, что известно как стандарт многоцелевых расширений почты в Интернете (MIME). Методы, определенные стандартом MIME, с помощью которых другие символы, не кодированные в ASCII, такие как алфавиты, используемые неязыковыми языками, а также другие произвольные двоичные данные, также могут быть закодированы в последовательности ASCII и переданы через сообщения электронной почты. Из двух основных средств кодирования, описанных стандартом MIME, base64 разделяет эту роль с другим, известным как «цитируемый для печати». Хотя способ печати в кавычках способен расширить ASCII за пределы ограниченного количества печатаемых символов в 94, base64 может взять любую последовательность байтов и преобразовать ее в последовательность ASCII.

Base64 должен взять строки данных, которые иначе не соответствовали бы стандарту ASCII, и преобразовать их в ASCII. Для этого метод кодирования представляет собой процесс сбора данных в группы по три байта и преобразования их в четыре числа, которые представляют соответствующие символы ASCII. Поскольку байт составляет восемь битов, где каждый бит представлен единичным или нулевым значением, три байта связаны последовательно, и вся последовательность переходит в 24-битный буфер. Затем 24 единицы и нули разбиваются на четыре группы по шесть битов, где каждой затем присваиваются номера, соответствующие символу ASCII.

Поскольку base64 способен кодировать любые двоичные данные, любая последовательность байтов может проходить через этот процесс. Однако есть ловушка в тех случаях, когда количество байтов для кодирования не делится на три, чтобы биты могли помещаться в буфер. Если последовательность байтов содержит, скажем, четыре или пять байтов, что-то все еще необходимо, чтобы заполнить буфер и заполнить все 24 бита. В этих случаях каждый отсутствующий байт представлен восемью нулями и впоследствии преобразуется в дополняющие символы в окончательном кодировании. Отсюда и упомянутый выше 65-й символ, представленный в закодированном сообщении знаком равенства (=); он появляется только в самом конце кодировки, если необходим наполнитель.

Хотя base64 изначально была разработана для передачи двоичных данных через сообщения электронной почты, ее использование вошло в игру в ряде других областей, помимо MIME. Одним из таких довольно распространенных применений является веб-базы данных и приложения для кодирования данных для создания унифицированного указателя ресурса (URL) в веб-форме. Расширяемый язык разметки (XML) также использует вариант, который позволяет включать двоичные данные, такие как небольшие изображения, в документы XML. Существуют и другие варианты методов шифрования и других связанных с безопасностью методов, таких как сокрытие паролей.