base64 — Кодировки данных Base16, Base32, Base64, Base85
Исходный код: Lib/base64.py
Этот модуль предоставляет функции для кодирования двоичных данных в печатные символы ASCII и декодирования таких кодировок обратно в двоичные данные. Он предоставляет функции кодирования и декодирования для кодировок, указанных в RFC 3548, который определяет алгоритмы Base16, Base32 и Base64, а также для фактического стандарта кодировок Ascii85 и Base85.
Кодировки RFC 3548 подходят для кодирования двоичных данных, чтобы их можно было безопасно отправлять по электронной почте, использовать в качестве частей URL или включать в часть запроса HTTP POST. Алгоритм кодирования отличается от программы uuencode.
Этот модуль предоставляет два интерфейса. Современный интерфейс поддерживает кодирование объектов типа байты в ASCII bytes и декодирование объектов типа байты или строк, содержащих ASCII, в bytes. Поддерживаются оба алфавита Base-64, определенные в RFC 3548 (обычный, а также безопасный для URL и файловой системы).
Устаревший интерфейс не поддерживает декодирование из строк, но предоставляет функции для кодирования и декодирования в и из объектов файла. Он поддерживает только стандартный алфавит Base64 и добавляет новые строки каждые 76 символов в соответствии с RFC 2045. Обратите внимание, что если вам нужна поддержка RFC 2045, вам, вероятно, стоит обратиться к пакету email вместо этого.
Изменено в версии 3.3: Теперь ASCII-только строки Unicode принимаются функциями декодирования современного интерфейса.
Изменено в версии 3.4: Теперь все объекты типа байты принимаются всеми функциями кодирования и декодирования в этом модуле. Добавлена поддержка Ascii85/Base85.
Современный интерфейс предоставляет:
-
base64.b64encode(s, altchars=None) -
Кодирует объект типа байты s с помощью Base64 и возвращает закодированный
bytes.Необязательные altchars должны быть объектом типа байты длиной не менее 2 (дополнительные символы игнорируются), который задаёт альтернативный алфавит для символов
+и/. Это позволяет приложению, например, генерировать строки Base64, безопасные для URL или файловой системы. По умолчаниюNone, для которого используется стандартный алфавит Base64.
-
base64.b64decode(s, altchars=None, validate=False) -
Декодирует закодированную в Base64 объект типа байты или строку ASCII s и возвращает декодированные
bytes.Необязательные altchars должны быть объектом типа байты или строкой ASCII длиной не менее 2 (дополнительные символы игнорируются), которые задают альтернативный алфавит, используемый вместо
+и/символов.Исключение
binascii.Errorгенерируется, если s неверно дополнено.Если validate равно
False(по умолчанию), символы, которые не находятся ни в стандартном алфавите base-64, ни в альтернативном алфавите, отбрасываются перед проверкой дополнения. Если validate равноTrue, эти символы вне алфавита во входных данных приводят к исключениюbinascii.Error.
-
base64.standard_b64encode(s) -
Кодирует объект типа байты s с использованием стандартного алфавита Base64 и возвращает закодированные
bytes.
-
base64.standard_b64decode(s) -
Декодирует объект типа байты или строку ASCII s с использованием стандартного алфавита Base64 и возвращает декодированные
bytes.
-
base64.urlsafe_b64encode(s) -
Кодирует объект типа байты s с использованием алфавита, безопасного для URL и файловой системы, который заменяет
-вместо+и_вместо/в стандартном алфавите Base64 и возвращает закодированныеbytes. Результат может все ещё содержать=.
-
base64.urlsafe_b64decode(s) -
Декодирует объект типа байты или строку ASCII s с использованием алфавита, безопасного для URL и файловой системы, который заменяет
-вместо+и_вместо/в стандартном алфавите Base64 и возвращает декодированныеbytes.
-
base64.b32encode(s) -
Кодирует объект типа байты s с помощью Base32 и возвращает закодированные
bytes.
-
base64.b32decode(s, casefold=False, map01=None) -
Декодирует закодированную в Base32 объект типа байты или строку ASCII s и возвращает декодированные
bytes.Необязательный casefold — флаг, указывающий, допускается ли использование строчных букв в качестве входных данных. По соображениям безопасности, по умолчанию
False.RFC 3548 разрешает необязательное сопоставление цифры 0 (ноль) с буквой O (о), а также необязательное сопоставление цифры 1 (единица) с буквой I (ай) или буквой L (эл). Необязательный аргумент map01, когда он не
None, указывает, на какую букву должна быть сопоставлена цифра 1 (когда map01 неNone, цифра 0 всегда сопоставляется с буквой O). По соображениям безопасности, значение по умолчаниюNone, так что 0 и 1 не допускаются во входных данных.Исключение
binascii.Errorгенерируется, если s неверно дополнено или если присутствуют символы, не входящие в алфавит, во входных данных.
-
base64.b16encode(s) -
Кодирует объект типа байты s с помощью Base16 и возвращает закодированные
bytes.
-
base64.b16decode(s, casefold=False) -
Декодирует закодированный в Base16 объект типа байты или строку ASCII s и возвращает декодированные
bytes.Необязательный casefold — флаг, указывающий, допускается ли использование строчных букв в качестве входных данных. По соображениям безопасности, по умолчанию
False.Исключение
binascii.Errorгенерируется, если s неверно дополнено или если присутствуют символы, не входящие в алфавит, во входных данных.
-
base64.a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False) -
Кодировать объект типа байты b с помощью Ascii85 и вернуть закодированные
bytes.foldspaces — необязательный флаг, использующий специальную короткую последовательность ‘y’ вместо 4 последовательных пробелов (ASCII 0x20), как поддерживается ‘btoa’. Эта функция не поддерживается в стандартном кодировании Ascii85.
wrapcol контролирует, нужно ли добавлять символы новой строки (
b'\n') в вывод. Если это значение отлично от нуля, каждая строка вывода будет иметь не более этого количества символов.pad контролирует, нужно ли дополнить входные данные до кратности 4 перед кодированием. Обратите внимание, что реализация
btoaвсегда дополняет.adobe контролирует, нужно ли обрамить закодированную последовательность байтов символами
<~и~>, что используется в реализации Adobe.Новая в версии 3.4.
-
base64.a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v') -
Декодировать закодированные в Ascii85 объекты типа байты или ASCII-строку b и вернуть декодированные
bytes.foldspaces — флаг, определяющий, нужно ли принимать последовательность ‘y’ как сокращение для 4 последовательных пробелов (ASCII 0x20). Эта функция не поддерживается в стандартном кодировании Ascii85.
adobe контролирует, находится ли входная последовательность в формате Adobe Ascii85 (т. е. обрамлена символами <~ и ~>).
ignorechars должен быть объектом типа байты или ASCII-строкой, содержащей символы, которые нужно игнорировать из входных данных. Он должен содержать только символы пробелов, а по умолчанию содержит все символы пробелов в ASCII.
Новая в версии 3.4.
-
base64.b85encode(b, pad=False) -
Кодировать объект типа байты b с помощью base85 (как используется, например, в двоичных различиях git-стиля) и вернуть закодированные
bytes.Если pad имеет значение True, входные данные дополняются
b'\0'до того, как они будут закодированы, чтобы их длина стала кратной 4 байтам.Новая в версии 3.4.
-
base64.b85decode(b) -
Декодировать закодированные в base85 объекты типа байты или ASCII-строку b и вернуть декодированные
bytes. Дополнения неявно удаляются при необходимости.Новая в версии 3.4.
Примечание
И Base85, и Ascii85 имеют коэффициент расширения 5 к 4 (5 символов Base85 или Ascii85 могут закодировать 4 двоичных байта), в то время как более известный Base64 имеет коэффициент расширения 6 к 4. Поэтому они эффективнее, когда важен объем занимаемого пространства. Они различаются по деталям, таким как используемая таблица символов для кодирования.
Легальный интерфейс:
-
base64.decode(input, output) -
Декодировать содержимое двоичного файла input и записать полученные двоичные данные в файл output. input и output должны быть объектами типа файл. input будет читаться до тех пор, пока
input.readline()не вернёт пустой объект типа байты.
-
base64.decodebytes(s) -
Декодировать объект типа байты s, который должен содержать одну или несколько строк данных, закодированных в base64, и вернуть декодированные
bytes.Новая в версии 3.1.
-
base64.decodestring(s) -
Устаревший псевдоним
decodebytes().Устарело начиная с версии 3.1.
-
base64.encode(input, output) -
Кодировать содержимое двоичного файла input и записать полученные данные, закодированные в base64, в файл output. input и output должны быть объектами типа файл. input будет читаться до тех пор, пока
input.read()не вернёт пустой объект типа байты.encode()вставляет символ новой строки (b'\n') после каждых 76 байтов вывода, а также гарантирует, что вывод всегда заканчивается символом новой строки, в соответствии с RFC 2045 (MIME).
-
base64.encodebytes(s) -
Кодировать объект типа байты s, который может содержать произвольные двоичные данные, и вернуть
bytes, содержащий закодированные в base64 данные, с символами новой строки (b'\n') после каждых 76 байтов вывода, гарантируя, что имеется конечная новая строка, в соответствии с RFC 2045 (MIME).Новая в версии 3.1.
-
base64.encodestring(s) -
Устаревший псевдоним
encodebytes().Устарело начиная с версии 3.1.
Пример использования модуля:
>>> import base64 >>> encoded = base64.b64encode(b'data to be encoded') >>> encoded b'ZGF0YSB0byBiZSBlbmNvZGVk' >>> data = base64.b64decode(encoded) >>> data b'data to be encoded'
См. также
-
Modulebinascii - Модуль поддержки, содержащий функции преобразования между ASCII и двоичным представлениями.
- RFC 1521 - MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies
- Раздел 5.2, “Кодирование Base64 Content-Transfer-Encoding,” содержит определение кодирования base64.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/base64.html