18.12. base64 – RFC 3548: кодировки Base16, Base32, Base64¶base64 – 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.