base64
— Base16, Base32, Base64, Base85 кодировки данных¶
Исходный код: Lib/base64.py
Модуль предоставляет функции для кодирования двоичных данных в печатные ASCII символы и декодирование обратно закодированные двоичные данные. Он предоставляет функции кодирования и декодирования представленные в RFC 3548, который определяет алгоритмы Base16, Base32 и base64 и де-факто стандарты Ascii85 и Base85 кодировок.
В RFC 3548 кодировки подходит для кодирования двоичных данных, так что его можно смело отправлять по электронной почте, используемой в качестве части URL- адреса или включения в состав HTTP-запроса POST. Алгоритм кодирования не совпадает с программой uuencode.
Существует два интерфейса, представленные в этом модуле. Современный интерфейс
поддерживает кодирование байтоподобных объектов в bytes
и
декодирование байтоподобных объектов или строк
содержащих ASCII в bytes
. Поддерживаются оба base-64 алфавита определеные
в RFC 3548 (обычные, URL и безопасные для файловой системы) .
Старый интерфейс не поддерживает декодирование из строки, но он
обеспечивает функции для кодирования и декодирования файловых объектов. Он
поддерживает только стандартный алфавит base64 и это добавляет новую строку
каждые 76 символов как в RFC 2045. Обратите внимание, что если вам нужна поддержка
RFC 2045, наверное, вам стоит взглянуть на пакет email
.
Изменено в версии 3.3: Только ASCII Юникод строки принимаются функцией декодирования современного интерфейса.
Изменено в версии 3.4: Любые байтоподобные объекты сейчас принимаются функциями для кодирования и декодирования в этом модуле. Добавлена проддержка Ascii85/Base85.
Современный интерфейс обеспечивает:
-
base64.
b64encode
(s, altchars=None)¶ Кодирование в байтоподобный объект s используя base64 и возвращает его в закодированных
bytes
.Опционально altchars должн быть байтоподобным объеком длиной по крайней мере 2 (лишние символы игнорируются), который указывает альтернативный алфавит для
+
и/
символов. Это позволяет приложению генерировать URL-адреса или безопасные для файловой системы base64 строки. По умолчанию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 (eye) или буква Д (el). Опциональный 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 - необязательный флаг, который использует специальную последовательность „г“, а не 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()
не вернёт пустой байт. func: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'
См.также
- Модуль
binascii
- Модуль поддержки преобразования ASCII-в-двоичный и двоичный-в-ASCII.
- RFC 1521 - MIME (Многоцелевые расширения почтового стандарта Internet) часть первая: механизмы для определения и описания формата тел интернет-сообщений
- Раздел 5.2 «содержание-передача-кодирование base64», дает определение кодировки base64.