Spec-Zone.ru › Python 3.6

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

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

Раздел 5.2, «Кодирование содержимого Base64», предоставляет определение кодирования Base64.

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

Spec-Zone.ru

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