Spec-Zone.ru › Python 3.7

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.

Легальный интерфейс:

base64.decode(input, output)

Декодировать содержимое двоичного файла input и записать результирующие двоичные данные в файл output. input и output должны быть объектами файлов. input будет читаться до тех пор, пока input.readline() не вернёт пустой объект bytes.

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() не вернёт пустой объект bytes. 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) Часть первая: Механизмы для указания и описания формата интернет-сообщений

Раздел 5.2, «Base64 Content-Transfer-Encoding», содержит определение кодирования base64.

© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.7/library/base64.html

Spec-Zone.ru

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