Документация Python неофициальный перевод

18.12. base64 – RFC 3548: кодировки Base16, Base32, Base64base64 – RFC 3548: Base16, Base32, Base64 Data Encodings

Этот модуль предоставляет кодирование и декодирование данных, как указано в RFC 3548. Этот стандарт определяет алгоритмы Base16, Base32 и Base64 для кодирования и декодирования произвольных двоичных строк в текстовые строки, которые можно безопасно отправлять по электронной почте, использовать как части URL или включать в HTTP POST-запросы. Алгоритм кодирования не совпадает с программой uuencode.

Этот модуль предоставляет два интерфейса. Современный интерфейс поддерживает кодирование и декодирование строковых объектов с использованием обоих алфавитов base-64, определённых в RFC 3548 (обычного, а также безопасного для URL и файловых систем). Устаревший интерфейс позволяет кодировать и декодировать как из файлоподобных объектов, так и из строк, но только с использованием стандартного алфавита Base64.

Современный интерфейс, появившийся в Python 2.4, предоставляет:

base64.b64encode(s[, altchars])

Кодирует строку с помощью Base64.

s – это кодируемая строка. Необязательный параметр altchars должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит для символов + и /. Это позволяет, например, генерировать строки Base64, безопасные для URL и файловых систем. По умолчанию используется None, для которого применяется стандартный алфавит Base64.

Возвращает закодированную строку.

base64.b64decode(s[, altchars])

Декодирует строку, закодированную Base64.

s – строка для декодирования. Необязательный параметр altchars должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит, используемый вместо символов + и /.

Возвращается декодированная строка. Если s имеет неправильное дополнение, возбуждается TypeError. Символы, не принадлежащие ни обычному алфавиту base-64, ни альтернативному, отбрасываются перед проверкой дополнения.

base64.standard_b64encode(s)

Кодирует строку s с использованием стандартного алфавита Base64.

base64.standard_b64decode(s)

Декодирует строку s с использованием стандартного алфавита Base64.

base64.urlsafe_b64encode(s)

Кодирует строку s с использованием алфавита, безопасного для URL и файловых систем, который заменяет - на + и _ на / в стандартном алфавите Base64. Результат всё ещё может содержать =.

base64.urlsafe_b64decode(s)

Декодирует строку s с использованием алфавита, безопасного для URL и файловых систем, который заменяет - на + и _ на / в стандартном алфавите Base64.

base64.b32encode(s)

Кодирует строку с помощью Base32. s – строка для кодирования. Возвращается закодированная строка.

base64.b32decode(s[, casefold[, map01]])

Декодирует строку, закодированную Base32.

s – декодируемая строка. Необязательный флаг casefold указывает, допустим ли алфавит в нижнем регистре на входе. В целях безопасности по умолчанию False.

RFC 3548 допускает необязательное отображение цифры 0 (ноль) на букву O (о) и необязательное отображение цифры 1 (один) на букву I(ай) или букву L (эл). Необязательный аргумент map01, когда он не None, указывает, на какую букву должна отображаться цифра 1 (когда map01 не None, цифра 0 всегда отображается на букву O). Из соображений безопасности значением по умолчанию является None, поэтому цифры 0 и 1 не допускаются во входных данных.

Возвращается декодированная строка. Если s имеет неправильное дополнение или в строке присутствуют неалфавитные символы, возбуждается TypeError.

base64.b16encode(s)

Кодирует строку с помощью Base16.

s – строка для кодирования. Возвращается закодированная строка.

base64.b16decode(s[, casefold])

Декодирует строку, закодированную Base16.

s – декодируемая строка. Необязательный флаг casefold указывает, допустим ли алфавит в нижнем регистре на входе. В целях безопасности по умолчанию False.

Возвращается декодированная строка. Если s имеет неправильное дополнение или в строке присутствуют неалфавитные символы, возбуждается TypeError.

Устаревший интерфейс:

base64.decode(input, output)

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

base64.decodestring(s)

Декодирует строку s, которая должна содержать одну или несколько строк данных, закодированных в base64, и возвращает строку, содержащую результирующие двоичные данные.

base64.encode(input, output)

Кодирует содержимое файла input и записывает полученные данные в кодировке base64 в файл output. input и output должны быть файловыми объектами или объектами, имитирующими интерфейс файлового объекта. input будет читаться до тех пор, пока input.read() не вернёт пустую строку. encode() возвращает закодированные данные с завершающим символом новой строки ('\n').

base64.encodestring(s)

Кодирует строку s, которая может содержать произвольные двоичные данные, и возвращает строку, содержащую одну или несколько строк данных в кодировке base64. encodestring() возвращает строку с одной или несколькими строками данных в кодировке base64, всегда включающую дополнительную завершающую новую строку ('\n').

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

>>> import base64
>>> encoded = base64.b64encode('data to be encoded')
>>> encoded
'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
'data to be encoded'

См. также

Модуль binascii

Вспомогательный модуль, содержащий преобразования ASCII-в-двоичный и двоичный-в-ASCII.

RFC 1521 – MIME (Многоцелевые расширения интернет-почты) Часть 1: Механизмы указания и описания формата тел интернет-сообщений

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