Spec-Zone.ru › Python 3.5

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'

См. также

Module binascii
Модуль поддержки, содержащий функции преобразования между 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API