Spec-Zone.ru › Python 3.9

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: Теперь функции декодирования современного интерфейса принимают строки Unicode, содержащие только ASCII.

Изменено в версии 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 (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.

END_OF_DOCUMENT_MARKER
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() не вернёт пустой объект типа байты.

base64.decodebytes(s)

Декодируйте объект типа байты s, который должен содержать одну или несколько строк данных, закодированных в base64, и вернуть декодированные bytes.

Добавлена в версии 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.

Пример использования модуля:

>>> 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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/base64.html

Spec-Zone.ru

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