Данные файла в кодировке base64 значение должно быть не больше 4404019 символов

Обновлено: 07.07.2024

Я слышал, как люди говорили о «кодировании base 64» здесь и там. Для чего его используют?

Чтобы обойти это, люди кодируют двоичные данные в символы. Base64 является одним из этих типов кодировок.

Почему 64?
Потому что вы, как правило, можете рассчитывать на то, что одни и те же 64 символа присутствуют во многих наборах символов, и вы можете быть достаточно уверены в том, что ваши данные окажутся на другой стороне провода не поврежденными.

(Теоретически вы могли бы сделать кодирование base-80 или что-то подобное, но это было бы значительно сложнее. Полномочия двух являются естественными основами для двоичного кода.) Означает ли это, что при передаче данных любого типа сети должна использоваться какая-то кодировка? Но почему метод base64 используется для кодирования строковых данных? например, в javascript atob function. Имеет ли смысл сервер для кодирования файла json в формат base64? Специальные символы могли бы быть вариантом использования, но почему бы не utf8 в этом случае, они эквивалентны? Любой дальнейший ресурс относительно этого был бы очень признателен, спасибо. Список хотя бы некоторых протоколов, которые потерпят неудачу, было бы неплохо иметь, если кто-то знает.

Это в основном способ кодирования произвольных двоичных данных в тексте ASCII. Требуется 4 символа на 3 байта данных, плюс, возможно, небольшой отступ в конце.

По сути, каждые 6 бит ввода кодируются в 64-символьном алфавите. «Стандартный» алфавит использует AZ, az, 0-9 и + и /, с = в качестве символа заполнения. Есть URL-безопасные варианты.

Википедия - достаточно хороший источник дополнительной информации.

В языке, подобном php, будут получены двоичные данные. Мы почти всегда работаем со строковыми данными, которые являются текстовыми. @CholthiPaulTtiopic: результаты шифрования или сжатия, или звука / изображения / видео. @CholthiPaulTtiopic: Боюсь, я понятия не имею, что вы подразумеваете под «как насчет хранилища», но на данный момент я думаю, что мы несколько не в теме. @CholthiPaulTtiopic: я бы сильно избегал думать в терминах «бинарного файла». Двоичные данные должны рассматриваться как двоичные данные, а не как текст. Я видел буквально сотни - возможно, тысячи - вопросов по SO, которые в основном сводятся к людям, которые недостаточно заботятся об этом различии.

Кодирование Base-64 - это способ взять двоичные данные и преобразовать их в текст, чтобы их было легче передавать в таких вещах, как электронная почта и данные HTML-формы.

Это текстовая кодировка двоичных данных, в которой результирующий текст содержит только буквы, цифры и символы «+», «/» и «=». Это удобный способ хранения / передачи двоичных данных через носитель, который специально используется для текстовых данных.

Но почему Base-64? Две альтернативы для преобразования двоичных данных в текст, которые сразу приходят на ум:

  1. Десятичное число: сохранить десятичное значение каждого байта в виде трех чисел: 045 112 101 037 и т. Д., Где каждый байт представлен 3 байтами. Данные раздуты в три раза.
  2. Шестнадцатеричный: сохранить байты в виде шестнадцатеричных пар: AC 47 0D 1A и т. Д., Где каждый байт представлен 2 байтами. Данные раздуты в два раза.

Base-64 отображает 3 байта (8 x 3 = 24 бита) в 4 символа, которые охватывают 6 бит (6 x 4 = 24 бита). Результат выглядит примерно так: «TWFuIGlzIGRpc3Rpb . ». Таким образом, вздутие живота составляет всего лишь 4/3 = 1,3333333 раза от оригинала.

Правильно ли я понимаю, что 64 - лучший выбор, так как это наивысшая степень двух, которая может быть преобразована в печатный символ ASCII (их 95)? Если в обоих случаях они равны 24 битам, то не вздутие лифта 1: 1? Или когда вы говорите 4 символа, которые охватывают 6 битов, вы имеете в виду, что на самом деле 8 символов на символ, но первые два дополняются нулями? @Backwards_Dave Каждые 6 бит выражаются в 8 битах. Таким образом, вздутие живота составляет 8: 6 или 4: 3.

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

Хэш:

Хэши - это односторонние функции, которые преобразуют блок байтов в другой блок байтов фиксированного размера, например 128 или 256 бит (SHA / MD5). Преобразование полученных байтов в Base64 значительно упрощает отображение хеша, особенно когда вы сравниваете контрольную сумму на целостность. Хеши так часто встречаются в Base64, что многие люди ошибочно принимают сам Base64 как хэш.

Криптография:

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

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

Сертификаты

На самом деле во многих случаях проще обрабатывать байты как байты. Даже в базе данных, и особенно в файле (если используются записи фиксированной длины или байты являются единственным содержимым). Base64 обычно используется, когда эти байты предназначены для передачи куда-либо, особенно по каналу, который может обрезать биты или интерпретировать некоторые байты как управляющие коды. Вы бы отобразили хеш как шестнадцатеричный, а не десятичный. Для хэшей это на самом деле гораздо чаще, чем base64. @cHao Да, это также распространено. Шестнадцатеричные цифры могут представлять любые двоичные данные, но преимущество базы 64 состоит в том, что она занимает гораздо меньше места, поскольку использует больше символов.

Несколько лет назад, когда была введена функциональность почтовой рассылки, так что с течением времени она была полностью основана на тексте, и возникла потребность в таких приложениях, как изображения и мультимедиа (аудио, видео и т. Д.). Когда эти вложения отправляются через Интернет (в основном в виде двоичных данных), вероятность повреждения двоичных данных в исходном виде высока. Итак, для решения этой проблемы пришел BASE64.

Проблема с двоичными данными состоит в том, что они содержат нулевые символы, которые в некоторых языках, таких как C, C ++, представляют конец символьной строки, поэтому отправка двоичных данных в необработанном виде, содержащем NULL-байты, не дает файлу полностью считываться и приводит к поврежденным данным.

В C и C ++ этот «нулевой» символ показывает конец строки. Так что "Привет" хранится так:

72 69 76 76 79 00

00 говорит "остановись здесь".

Теперь давайте рассмотрим, как работает кодирование BASE64.

Обратите внимание: длина строки должна быть кратна 3.

Пример 1:

Строка для кодирования: «туз», длина = 3

1) Конвертировать каждый символ в десятичную.

а = 97, с = 99, е = 101

введите описание изображения здесь

97 = 01100001, 99 = 01100011, 101 = 01100101

Комбинированный: 01100001 01100011 01100101

3) Отдельно в группе 6 бит.

011000 010110 001101 100101

4) Рассчитать двоичное в десятичное

011000 = 24, 010110 = 22, 001101 = 13, 100101 = 37

5) Преобразование десятичных символов в base64 с использованием диаграммы base64.

24 = Y, 22 = W, 13 = N, 37 = l

введите описание изображения здесь

Пример 2:

Строка для кодирования: «abcd» Length = 4, она не кратна 3. Поэтому, чтобы сделать длину строки кратной 3, мы должны добавить 2-битовое заполнение, чтобы сделать length = 6. Бит заполнения представлен знаком «=».

Следует отметить: один бит дополнения равен двум нулям 00, поэтому два бита дополнения равны четырем нулям 0000.

Итак, давайте начнем процесс: -

1) Конвертировать каждый символ в десятичную.

а = 97, б = 98, с = 99, д = 100

97 = 01100001, 98 = 01100010, 99 = 01100011, 100 = 01100100

3) Отдельно в группе 6 бит.

011000, 010110, 001001, 100011, 011001, 00

поэтому последний 6-бит не является полным, поэтому мы вставляем два дополнительных бита, равных четырем нулям «0000».

011000, 010110, 001001, 100011, 011001, 000000 ==

Теперь оно равное. Два знака равенства в конце показывают, что были добавлены 4 нуля (помогает при декодировании).

4) Рассчитать двоичные числа в десятичные.

011000 = 24, 010110 = 22, 001001 = 9, 100011 = 35, 011001 = 25, 000000 = 0 ==

5) Преобразование десятичных символов в base64 с использованием диаграммы base64.

24 = Y, 22 = W, 9 = j, 35 = j, 25 = Z, 0 = A ==

Следовательно, 0x01 будет передано как 0x81; 0x02 будет 0x82; 0x03 останется 0x03 и т. Д.

Для дальнейшего развития этой системы, когда был определен набор символов ASCII, только 00-7F были назначены символы. (До сих пор все символы в диапазоне 80-FF нестандартны)

Немногие из роутеров выжили в 90-х годах. Я сильно сомневаюсь, что любой из них используется сегодня.

Это отличная тема для обсуждения и интересный урок истории, спасибо.

Некоторые транспортные протоколы позволяют передавать только буквенно-цифровые символы. Просто представьте ситуацию, когда управляющие символы используются для запуска специальных действий и / или поддерживают только ограниченную битовую ширину для каждого символа. Base64 преобразует любой ввод в кодировку, в которой используются только буквенно-цифровые символы + , / и в = качестве символа заполнения.

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

У меня возникли проблемы, когда я обнаружил, что MySQL utf8 не поддерживает 4-байтовые символы Unicode, поскольку он использует 3-байтовую версию utf8. Так что же я сделал для поддержки полного 4-байтового юникода поверх utf8 MySQL? Хорошо, base64 кодирует строки при сохранении в базе данных и base64 декодирует при извлечении.

Поскольку кодирование и декодирование base64 выполняется очень быстро, все вышеперечисленное работает отлично.

У вас есть следующие моменты, чтобы принять к сведению:

Кодировка Base64 использует на 33% больше памяти

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

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

Александр Терехов
дата публикации 17-10-2002 13:16

Вступление

Изначально для передачи электронной почты в Интернет использовался только текст (RFC822). Затем, с развитием компьютерных девайсов, потребовалась возможность передачи нетекстовой информации: аудио, видео, графических файлов, файлов приложений и т.д. Однако почтовые сервера как понимали только текст, так и остались понимать только его. Поэтому появилась необходимость каким-то образом преобразовать двоичный файл в текстовый. Вообще-то способ такого преобразования уже имел место - это UUE кодирование. Но появился еще один - base64. Этот способ используется в спецификации MIME (RFC2045-2049).

Идеология base64

Как известно, байт состоит из восьми битов :)
В один байт можно вложить 256 цифр, от 0 до 255. Однако, если вместо восьми байт использовать только шесть, то объем вложенной информации уменьшается до 64 цифр, от 0 до 63. Теперь главное: любую цифру 6-ти битового байта можно представить в виде печатного символа. 64 символа это не так много, us-ascii символов вполне хватит. Ниже представлен 64-х символьный base64 "алфавит". где код символа A - 0, а код символа / - 63.

Вроде, понятно. Что дальше?

А далее берутся три последовательных байта по восемь бит (всего 24 бита), и побитно делятся на четыре 6-ти битных байта (всего 24 бита).
Немного странно звучит: "шестибитный байт". На самом деле бит восемь, однако используются только 6 младших бит, два старших бита игнорируются.
Схематично такое "деление три к четырем" можно представить себе так:

В приведенном примере три числа 103, 193 и 58 были закодированы в base64 формат. В результате мы получили 4-х символьный стринг Z8E6. Т.о. на практике увидели идеологию перевода двоичной информации в текст по принципу 3 к 4.

Основываясь на этом принципе, мы можем закодировать любую двоичную информацию в текст, причем не очень сильно увеличивая ее объем (на 30%). Затем наша информация через почтовый сервер попадет к нужному адресату, почтовик которого декодирует текст в двоичный файл.

Все довольны, все смеются.
"Но..", скажите Вы, - "что делать, если у нас нет трех байтов? Есть только один или два!" В этом случае в конец четырех символьного стринга добавляется символ = (равно). Если не хватает (до трех) одного байта, то добавляется один символ "равно": если не хватает двух байт, то добавляются два символа "равно": Что радует: с символами "равно" надо разбираться только один раз - при чтении конца файла.
На этом вроде бы все.

Нет, еще не все. Формат base64 имеет ограничение - общая длина строки, состоящая из 4-х символьных стрингов составляет 72 символа (за исключением самой последней строки - там уже сколько получится).

  1. Имеющейся почтовой программой сохранить в файл какое-нибудь письмо. Письмо, естественно, надо выбрать со вложенным файлом. При сохранении письма, тип файла следует выбрать "почтового формата" (e-mail message), например *.msg или *.eml
  2. Включить самый мощный текстовый редактор - Notepad ("Блокнот") и открыть сохраненный файл письма. Тем, у кого п.2 не получился с первого раза - тип файла при открытии его "Блокнотом" надо указать "Все файлы" (*.*)
  3. В "Блокноте" (а если файл большой, то в WordPad'е) откроется примерно нижеследующее:

Полный текст можно посмотреть в файле EMail.txt.

Алгоритм base64 кодирования и декодирования.

Рассмотрим шаг 1.

Как видно из приведенной схемы, проверить установку старшего бита совсем несложно. Если результатом операции получается число 128, значит бит установлен, а если в результате получаем 0, значит старший бит не установлен. Далее в зависимости от полученного результата применим к 6-ти битовому байту битовую операцию OR с числом 1, которая в любом случае применения устанавливает первый (младший) байт в 1. Здесь необходимо учитывать то, что перед применением побитовой операции OR с числом 1 младший бит 6-ти битового байта всегда 0. В случае для первых двух шагов потому, что мы сами обнуляем его при инициализации, для последующих шагов, потому что применяем операцию SHR.

Итак, посмотрим как выглядит реализация первого шага в Паскале:

Повторяем шаги 1 и 2 шесть раз для каждого бита 6-ти битного байта. Одновременно необходимо следить за тем, что если мы обработали восемь бит байта-источника, следует перейти к новому байту. И последнее - если обработаны все три байта-источники, следует выйти из функции кодирования.

Теперь о декодировании.

Примеры.

В первом примере ( b64_Example1 5К) показана работа модуля base64-кодирования (декодирования). Три восьмибитных байта кодируются в 4-х символьный стринг и обратно. Понятно, что это всего лишь пример и при вводе цифр и букв следует соблюдать base64-алфавит.

Конечно, при кодировании надо считывать по 58 байт, а не по 3, как это сделано в примере. Считывание по 58 байт значительно увеличит "скорострельность" утилиты. Но следует учитывать, что это всего лишь пример.

Пример очередного изобретения велосипеда :)

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Вообще, все началось давно. Настолько давно, что вряд ли остались свидетели holy wars тех дней, когда решалось — сколько же бит должно быть в байте.

Это сейчас нам кажется само собой разумеющимся, что 1 байт = 8 бит, что в байте можно закодировать 256 различных значений. Но когда-то было совсем не так. История помнит и семибитные кодировки, и шестибитные, и даже более экзотические системы (например — ЭВМ «Сетунь», которая использовала троичную логику, то есть один троичный бит — трит мог иметь три, а не два значения, для нее было справедливо соотношение 1 трайт = 6 тритам). Но если оставить в стороне всякую экзотику, то мэйнстримом все-таки были кодировки, в которых 6, 7 или 8 бит в байте.

Шестибитная кодировка (например — BCD) позволяла закодировать в одном байте 64 различных значения, что, как казалось, было вполне достаточно для кодирования алфавитно-цифровых символов, а «лишний» седьмой бит расширял кодировку уже до 128 символов.

Однако скоро восьмибитный байт стал общепринятым.

Проблема восьмого бита

Утверждение восьмибитных кодировок как стандарта де-факто принесло много проблем. К этому моменту уже существовала определенная инфраструктура, использующая именно семибитные кодировки, и holy wars разгорелись с новой силой.

До нас они дошли в виде проблем с «обрезанием восьмого бита» в системе электронной почты. Утверждение восьмибитного байта дало 256 различных значений для одного байта, что, в свою очередь позволило уместить в одной кодовой таблице и общепринятые символы (цифры, знаки препинания, латиницу) и символы, скажем кириллицы. Казалось бы — сплошное удобство, текст можно набирать хоть русскими буквами, хоть английскими, а если нужно — и для немецких умлаутов место найдется!

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

А что было делать другим языкам, народам и кодировкам? А бинарные данные? Все равно кодировки с транслитерацией не решали фундаментальную проблему — потерю восьмого бита, потерю части информации. Так родилась кодировка (а точнее — алгоритм) Base64.

Алгоритм Base64

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

В основе алгоритма лежит сведение трех восьмерок битов (24) к четырем шестеркам (тоже 24) и представление этих шестерок в виде символов ASCII. Таким образом получается обратимое шифрование, единственным недостатком которого будет увеличивающийся при кодировании размер — в соотношении 4:3.

Пример:
Возьмем текст русский текст «АБВГД». В двоичной форме в кодировке Windows-1251 мы получим 5 байтов:
11000000
11000001
11000010

11000011
11000100
(00000000) — лишний нулевой байт нужен, чтобы общее число бит делилось на 6

Разделим эти биты на группы по 6:
110000
001100
000111
000010

Кодировка Base64 позволяет нам преобразовывать байты, содержащие двоичные или текстовые данные, в символы ASCII. В этом уроке мы будем кодировать и декодировать строки Base64 в Python.

Вступление

Вы когда-нибудь получали PDF-файл или файл изображения от кого-то по электронной почте только для того, чтобы увидеть странные символы, когда вы открываете его? Это может произойти, если ваш почтовый сервер был предназначен только для обработки текстовых данных. Файлы с двоичными данными, байтами, которые представляют нетекстовую информацию, такую как изображения, могут быть легко повреждены при передаче и обработке в текстовые системы.

Кодировка Base64 позволяет нам преобразовывать байты, содержащие двоичные или текстовые данные, в символы ASCII . Кодируя наши данные, мы повышаем вероятность их правильной обработки различными системами.

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

  • Что Такое Кодировка Base64?
  • Как Работает Кодировка Base64?
  • Зачем Использовать Кодировку Base64?
  • Кодирование строк с помощью Python
  • Декодирование строк с помощью Python
  • Кодирование двоичных данных с помощью Python
  • Декодирование двоичных данных с помощью Python
  • Вывод

Что такое кодировка Base64?

Набор символов Base64 содержит:

  • 26 заглавных букв
  • 26 строчных букв
  • 10 чисел
  • + и / для новых строк (некоторые реализации могут использовать разные символы)

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

Примечание: Это не алгоритм шифрования, и его не следует использовать в целях безопасности.

Теперь, когда мы знаем, что такое кодировка Base64 и как она представлена на компьютере, давайте посмотрим глубже, как она работает.

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

Мы проиллюстрируем, как работает кодировка Base64 путем преобразования текстовых данных, поскольку она более стандартна, чем различные двоичные форматы на выбор. Если бы мы должны были Base64 кодировать строку мы бы выполнили следующие действия:

01010000 01111001 01110100 01101000 01101111 01101110

010100 000111 100101 110100 011010 000110 111101 101110

Примечание: Иногда мы не можем сгруппировать данные в последовательности по 6 бит. Если это произойдет, мы должны дополнить последовательность .

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

20 7 37 52 26 6 61 46

Наконец, мы преобразуем эти десятичные дроби в соответствующий символ Base64 с помощью таблицы преобразования Base64:

Чтобы кодировать строку Base64, мы преобразуем ее в двоичные последовательности, затем в десятичные последовательности и, наконец, используем таблицу поиска, чтобы получить строку символов ASCII. С этим более глубоким пониманием того, как это работает, давайте посмотрим, почему мы должны кодировать наши данные Base64.

Зачем использовать кодировку Base64?

В компьютерах все данные различных типов передаются как 1s и 0s. Однако некоторые каналы связи и приложения не в состоянии понять все биты, которые он получает. Это происходит потому, что значение последовательности 1 и 0 зависит от типа данных, которые она представляет. Например, 10110001 должен быть обработан по-другому, если он представляет собой букву или изображение.

Чтобы обойти это ограничение, вы можете кодировать свои данные в текст, повышая вероятность их правильной передачи и обработки. Base64-это популярный метод преобразования двоичных данных в символы ASCII, который широко используется большинством сетей и приложений.

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

Кодирование строк с помощью Python

Python 3 предоставляет модуль base64 , который позволяет нам легко кодировать и декодировать информацию. Сначала мы преобразуем строку в байтоподобный объект. После преобразования мы можем использовать модуль base64 для его кодирования.

В новом файле encoding_text.py , введите следующее:

В приведенном выше коде мы сначала импортировали модуль base64 . Переменная message хранит нашу входную строку для кодирования. Мы преобразуем его в байтоподобный объект, используя метод строки encode , и сохраняем его в message_bytes . Затем мы кодируем Base64 message_bytes и сохраняем результат в base64_bytes с помощью метода base64.b64encode . Наконец, мы получаем строковое представление преобразования Base64, декодируя base64_bytes как ASCII.

Примечание: Обязательно используйте тот же формат кодировки, что и при преобразовании из строки в байт, и из байта в строку. Это предотвращает повреждение данных.

Запуск этого файла приведет к следующему результату:

Теперь давайте посмотрим, как мы можем декодировать строку Base64 в ее необработанное представление.

Декодирование строк с помощью Python

Декодирование строки Base64, по сути, является обратным процессом кодирования. Мы декодируем строку Base64 в байты некодированных данных. Затем мы преобразуем байтоподобный объект в строку.

В новом файле под названием decoding_text.py , напишите следующий код:

Запустите этот файл, чтобы увидеть следующие выходные данные:

Теперь, когда мы можем кодировать и декодировать строковые данные, давайте попробуем кодировать двоичные данные.

Кодирование двоичных данных с помощью Python

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

Давайте посмотрим, как мы можем закодировать этот образ:

Создайте новый файл encoding_binary.py и добавить следующее:

Затем мы используем метод read () , чтобы получить все данные в файле в переменную binary_file_data . Аналогично тому, как мы обрабатывали строки, мы Base64 кодировали байты с помощью base64.b64encode , а затем использовали decode('utf-8') on base64_encoded_data , чтобы получить кодированные Base64 данные с помощью удобочитаемых символов.

Выполнение кода приведет к получению аналогичного результата:

Ваши выходные данные могут варьироваться в зависимости от изображения, которое вы выбрали для кодирования.

Теперь, когда мы знаем, как Bas64 кодирует двоичные данные в Python, давайте перейдем к декодированию двоичных данных Base64.

Декодирование двоичных данных с помощью Python

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

Давайте посмотрим, как Base64 декодирует двоичные данные на практике, создавая новый файл с именем decoding_binary.py . Введите следующий код в файл Python:

В приведенном выше коде мы сначала преобразуем наши строковые данные Base64 в байтоподобный объект, который можно декодировать. Когда вы декодируете двоичный файл base64, вы должны знать тип данных, которые декодируются . Например, эти данные действительны только в виде PNG-файла, а не MP3-файла, поскольку они кодируют изображение.

Как только файл назначения открыт, мы Base64 декодируем данные с помощью base64.decodebytes , отличного метода от base64.b64decode , который использовался со строками. Этот метод следует использовать для декодирования двоичных данных. Наконец, мы записываем декодированные данные в файл.

В том же каталоге, который вы выполнили decoding_binary.py , теперь вы должны увидеть новый файл decoded_image.jpg , содержащий исходное изображение, которое было закодировано ранее.

Вывод

Кодирование Base64-это популярный метод преобразования данных в различных двоичных форматах в строку символов ASCII. Это полезно при передаче данных в сети или приложения, которые не могут обрабатывать необработанные двоичные данные, но легко обрабатывают текст.

С помощью Python мы можем использовать модуль base64 для кодирования и декодирования текстовых и двоичных данных Base64.

Какие приложения вы бы использовали для кодирования и декодирования данных Base64?

Читайте также: