19.6. base64 – RFC 3548: Base16, Base32, Base64 кодирование данных¶base64 – RFC 3548: Base16, Base32, Base64 Data Encodings
Этот модуль предоставляет кодирование и декодирование данных, как указано в RFC 3548. Этот стандарт определяет алгоритмы Base16, Base32 и Base64 для кодирования и декодирования произвольных двоичных строк в строки байтов, состоящие только из ASCII, которые можно безопасно отправлять по электронной почте, использовать как части URL или включать как часть HTTP POST-запроса. Алгоритм кодирования не совпадает с программой uuencode.
Этот модуль предоставляет два интерфейса. Современный интерфейс поддерживает кодирование и декодирование объектов байтовых строк ASCII с использованием всех трёх алфавитов. Кроме того, функции декодирования современного интерфейса также принимают строки Unicode, содержащие только символы ASCII. Устаревший интерфейс предоставляет кодирование и декодирование для файлоподобных объектов, а также байтовых строк, но только с использованием стандартного алфавита Base64.
Изменено в версии 3.3: Теперь функции декодирования современного интерфейса принимают строки Unicode, содержащие только ASCII.
Современный интерфейс предоставляет:
- base64.b64encode(s, altchars=None)¶
Кодирует байтовую строку в Base64.
s – строка для кодирования. Необязательный аргумент altchars должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит для символов + и /. Это позволяет, например, генерировать строки Base64, безопасные для URL или файловой системы. По умолчанию используется None, при этом применяется стандартный алфавит Base64.
Возвращается закодированная байтовая строка.
- base64.b64decode(s, altchars=None, validate=False)¶
Декодирует байтовую строку, закодированную в Base64.
s – байтовая строка для декодирования. Необязательный аргумент altchars должен быть строкой длиной не менее 2 (дополнительные символы игнорируются), которая задаёт альтернативный алфавит, используемый вместо символов + и /.
Возвращается декодированная строка. Исключение binascii.Error возбуждается, если s имеет неправильное дополнение.
Если validate равен False (по умолчанию), символы, не входящие в алфавит base64, отбрасываются перед проверкой дополнения. Если validate равен True, символы, не входящие в алфавит base64, во входных данных приводят к binascii.Error.
- 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=False, map01=None)¶
Декодирует байтовую строку, закодированную в Base32.
s – байтовая строка для декодирования. Необязательный аргумент 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)¶
Кодирует байтовую строку с использованием Base16.
s – строка для кодирования. Возвращается закодированная байтовая строка.
- base64.b16decode(s, casefold=False)¶
Декодировать строку байтов, закодированную в Base16.
s – декодируемая строка. Необязательный параметр casefold – флаг, указывающий, допустим ли алфавит в нижнем регистре на входе. Из соображений безопасности по умолчанию False.
Возвращается декодированная строка байтов. Если s дополнена неправильно или в строке есть символы, не входящие в алфавит, возбуждается TypeError.
Устаревший интерфейс:
- base64.decode(input, output)¶
Декодировать содержимое бинарного файла input и записать полученные бинарные данные в файл output. input и output должны быть файловыми объектами. Чтение из input продолжается, пока input.read() не вернёт пустой объект bytes.
- base64.decodebytes(s)¶
- base64.decodestring(s)¶
Декодировать строку байтов s, которая должна содержать одну или более строк данных, закодированных base64, и вернуть строку байтов с полученными бинарными данными. decodestring – устаревший псевдоним.
Новое в версии 3.1.
- base64.encode(input, output)¶
Закодировать содержимое бинарного файла input и записать полученные данные в кодировке base64 в файл output. input и output должны быть файловыми объектами. Чтение из input продолжается, пока input.read() не вернёт пустой объект bytes. encode() возвращает закодированные данные с добавленным символом новой строки (b'\n') в конце.
- base64.encodebytes(s)¶
- base64.encodestring(s)¶
Закодировать строку байтов s, которая может содержать произвольные бинарные данные, и вернуть строку байтов, содержащую одну или более строк данных в кодировке base64. encodebytes() возвращает строку, содержащую одну или более строк данных в кодировке base64, всегда включая дополнительный завершающий символ новой строки (b'\n'). encodestring – устаревший псевдоним.
Пример использования модуля:
>>> 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 (Многоцелевые расширения интернет-почты) Часть 1: Механизмы указания и описания формата тел интернет-сообщений
- Раздел 5.2, «Base64 Content-Transfer-Encoding», содержит определение кодировки base64.