base64 — Base16, Base32, Base64, Base85 Data Encodings

Вихідний код: Lib/base64.py


This module provides functions for encoding binary data to printable ASCII characters and decoding such encodings back to binary data. It provides encoding and decoding functions for the encodings specified in RFC 3548, which defines the Base16, Base32, and Base64 algorithms, and for the de-facto standard Ascii85 and Base85 encodings.

The RFC 3548 encodings are suitable for encoding binary data so that it can safely sent by email, used as parts of URLs, or included as part of an HTTP POST request. The encoding algorithm is not the same as the uuencode program.

There are two interfaces provided by this module. The modern interface supports encoding bytes-like objects to ASCII bytes, and decoding bytes-like objects or strings containing ASCII to bytes. Both base-64 alphabets defined in RFC 3548 (normal, and URL- and filesystem-safe) are supported.

Застарілий інтерфейс не підтримує декодування з рядків, але він надає функції для кодування та декодування до та з файлових об’єктів. Він підтримує лише стандартний алфавіт Base64 і додає нові рядки кожні 76 символів відповідно до RFC 2045. Зауважте, що якщо ви шукаєте підтримку RFC 2045, ви, ймовірно, захочете подивитися на пакет email.

Змінено в версії 3.3: Тепер функції декодування сучасного інтерфейсу приймають рядки Unicode лише для ASCII.

Змінено в версії 3.4: Будь-які байтоподібні об’єкти тепер приймаються всіма функціями кодування та декодування в цьому модулі. Додано підтримку Ascii85/Base85.

Сучасний інтерфейс забезпечує:

base64.b64encode(s, altchars=None)

Закодуйте bytes-like object s за допомогою Base64 і поверніть закодовані bytes.

Optional altchars must be a bytes-like object of at least length 2 (additional characters are ignored) which specifies an alternative alphabet for the + and / characters. This allows an application to e.g. generate URL or filesystem safe Base64 strings. The default is None, for which the standard Base64 alphabet is used.

base64.b64decode(s, altchars=None, validate=False)

Декодуйте закодований Base64 bytes-like object або рядок ASCII s і повертайте розкодований bytes.

Optional altchars must be a bytes-like object or ASCII string of at least length 2 (additional characters are ignored) which specifies the alternative alphabet used instead of the + and / characters.

Виняток binascii.Error викликається, якщо s неправильно доповнено.

Якщо validate має значення False (за замовчуванням), символи, які не належать ні до звичайного алфавіту base-64, ні до альтернативного алфавіту, відкидаються перед перевіркою заповнення. Якщо validate має значення True, ці неалфавітні символи у вхідних даних призводять до binascii.Error.

base64.standard_b64encode(s)

Кодуйте bytes-like object s за допомогою стандартного алфавіту Base64 і повертайте закодовані bytes.

base64.standard_b64decode(s)

Декодуйте bytes-like object або рядок ASCII s за допомогою стандартного алфавіту Base64 і повертайте декодований bytes.

base64.urlsafe_b64encode(s)

Кодуйте bytes-like object s за допомогою алфавіту, безпечного для URL-адреси та файлової системи, який замінює - замість + і _ замість / у стандартному алфавіті Base64 і повертає закодовані bytes. Результат все ще може містити =.

base64.urlsafe_b64decode(s)

Декодуйте bytes-like object або рядок ASCII s за допомогою алфавіту, безпечного для URL-адреси та файлової системи, який замінює - замість + і _ замість / у стандартному алфавіті Base64 і повертає декодовані bytes.

base64.b32encode(s)

Закодуйте bytes-like object s за допомогою Base32 і поверніть закодовані bytes.

base64.b32decode(s, casefold=False, map01=None)

Декодуйте закодований Base32 bytes-like object або рядок ASCII s і повертайте розкодований bytes.

Необов’язковий casefold — це позначка, яка вказує, чи прийнятний алфавіт у нижньому регістрі як вхідні дані. З міркувань безпеки за умовчанням встановлено значення False.

RFC 3548 allows for optional mapping of the digit 0 (zero) to the letter O (oh), and for optional mapping of the digit 1 (one) to either the letter I (eye) or letter L (el). The optional argument map01 when not None, specifies which letter the digit 1 should be mapped to (when map01 is not None, the digit 0 is always mapped to the letter O). For security purposes the default is None, so that 0 and 1 are not allowed in the input.

Помилка binascii.Error виникає, якщо s неправильно доповнено або якщо у вхідних даних присутні символи не алфавіту.

base64.b16encode(s)

Закодуйте bytes-like object s за допомогою Base16 і поверніть закодовані bytes.

base64.b16decode(s, casefold=False)

Декодуйте закодований Base16 bytes-like object або рядок ASCII s і повертайте розкодований bytes.

Необов’язковий casefold — це позначка, яка вказує, чи прийнятний алфавіт у нижньому регістрі як вхідні дані. З міркувань безпеки за умовчанням встановлено значення False.

Помилка binascii.Error виникає, якщо s неправильно доповнено або якщо у вхідних даних присутні символи не алфавіту.

base64.a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False)

Закодуйте bytes-like object b за допомогою Ascii85 та поверніть закодовані bytes.

foldspaces — це необов’язковий прапорець, який використовує спеціальну коротку послідовність «y» замість 4 послідовних пробілів (ASCII 0x20), як це підтримується «btoa». Ця функція не підтримується «стандартним» кодуванням Ascii85.

wrapcol controls whether the output should have newline (b'\n') characters added to it. If this is non-zero, each output line will be at most this many characters long.

pad контролює, чи додається вхід до числа, кратного 4, перед кодуванням. Зауважте, що реалізація btoa завжди доповнює.

adobe контролює, чи буде закодована послідовність байтів обрамлена <~ and ~>, яка використовується реалізацією Adobe.

Нове в версії 3.4.

base64.a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\v')

Декодуйте закодований Ascii85 bytes-like object або рядок ASCII b та повертайте декодований bytes.

foldspaces — це позначка, яка вказує, чи слід приймати коротку послідовність „y“ як скорочення для 4 послідовних пробілів (ASCII 0x20). Ця функція не підтримується «стандартним» кодуванням Ascii85.

adobe контролює, чи буде вхідна послідовність у форматі Adobe Ascii85 (тобто в рамці <~ and ~>).

ignorechars має бути bytes-like object або рядком ASCII, що містить символи, які слід ігнорувати у введених даних. Він має містити лише пробільні символи та за замовчуванням містить усі пробільні символи в ASCII.

Нове в версії 3.4.

base64.b85encode(b, pad=False)

Закодуйте bytes-like object b за допомогою base85 (як використовується, наприклад, у бінарних відмінностях у стилі git) і поверніть закодований bytes.

Якщо pad має значення true, вхід доповнюється b'\0, тому його довжина є кратною 4 байтам перед кодуванням.

Нове в версії 3.4.

base64.b85decode(b)

Декодуйте закодований base85 bytes-like object або рядок ASCII b та повертайте декодований bytes. Відступи неявно видаляються, якщо необхідно.

Нове в версії 3.4.

Застарілий інтерфейс:

base64.decode(input, output)

Декодуйте вміст двійкового вхідного файлу та запишіть отримані двійкові дані у вихідний файл. вхід і вихід мають бути файловими об’єктами. input читатиметься, доки input.readline() не поверне порожній об’єкт bytes.

base64.decodebytes(s)

Декодуйте bytes-like object s, який має містити один або кілька рядків даних у кодуванні base64, і повертайте розкодовані bytes.

Нове в версії 3.1.

base64.encode(input, output)

Закодуйте вміст двійкового вхідного файлу та запишіть отримані дані в кодуванні base64 у вихідний файл. вхід і вихід мають бути файловими об’єктами. input читатиметься, доки input.read() не поверне порожній об’єкт bytes. encode() вставляє символ нового рядка (b'\n') після кожних 76 байтів виводу, а також гарантує, що вивід завжди закінчується символом нового рядка, відповідно до RFC 2045 (MIME).

base64.encodebytes(s)

Закодуйте bytes-like object s, який може містити довільні двійкові дані, і поверніть bytes, що містить дані в кодуванні base64, із символами нового рядка (b'\n') вставляється після кожних 76 байтів виводу та забезпечує наявність кінцевого нового рядка відповідно до RFC 2045 (MIME).

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

Розділ 5.2 «Кодування передачі вмісту Base64» містить визначення кодування base64.