base64.md
1> **Источник:** https://python-all.ru/3.16/library/base64.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `base64` – кодирование данных Base16, Base32, Base64, Base8589**Исходный код:** [Lib/base64.py](https://python-all.ru/src/main/Lib/base64.py)1011---1213Этот модуль предоставляет функции для кодирования двоичных данных в печатные символы ASCII и декодирования таких кодировок обратно в двоичные данные. Сюда входят [кодировки, указанные в](https://python-all.ru/3.16/library/base64.html#base64-rfc-4648) [**RFC 4648**](https://python-all.ru/3.16/library/base64.html) (Base64, Base32 и Base16), [кодировка Base85](https://python-all.ru/3.16/library/base64.html#base64-base-85), указанная в [PDF 2.0](https://python-all.ru/3.16/library/base64.html), и нестандартные варианты Base85, используемые в других местах.1415Модуль предоставляет два интерфейса. Современный интерфейс поддерживает кодирование [байтоподобных объектов](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) в ASCII [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) и декодирование байтоподобных объектов или строк, содержащих ASCII, в `bytes`. Поддерживаются оба алфавита base-64, определённых в [**RFC 4648**](https://python-all.ru/3.16/library/base64.html) (обычный и безопасный для URL и файловых систем).1617[Устаревший интерфейс](https://python-all.ru/3.16/library/base64.html#base64-legacy) не поддерживает декодирование из строк, но предоставляет функции для кодирования и декодирования в [файловые объекты](https://python-all.ru/3.16/glossary.html#term-file-object) и из них. Он поддерживает только стандартный алфавит Base64 и добавляет символы новой строки каждые 76 символов, как указано в [**RFC 2045**](https://python-all.ru/3.16/library/base64.html). Обратите внимание: если вам нужна поддержка [**RFC 2045**](https://python-all.ru/3.16/library/base64.html), возможно, стоит обратить внимание на пакет [`email`](https://python-all.ru/3.16/library/email.html#module-email).1819Изменено в версии 3.3: Теперь функции декодирования современного интерфейса принимают строки Unicode, содержащие только ASCII.2021Изменено в версии 3.4: Теперь все функции кодирования и декодирования в этом модуле принимают любые [байтоподобные объекты](https://python-all.ru/3.16/glossary.html#term-bytes-like-object). Добавлена поддержка Ascii85/Base85.2223## Кодировки RFC 46482425Кодировки [**RFC 4648**](https://python-all.ru/3.16/library/base64.html) подходят для кодирования двоичных данных, чтобы их можно было безопасно отправлять по электронной почте, использовать как части URL или включать в тело HTTP POST-запроса.2627#### `base64.b64encode(s, altchars=None, *, padded=True, wrapcol=0)`2829Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s* с помощью Base64 и возвращает закодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).3031Необязательный *altchars* должен быть [байтоподобным объектом](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) длины 2, который задаёт альтернативный алфавит для символов `+` и `/`. Это позволяет приложению, например, генерировать строки Base64, безопасные для URL или файловых систем. По умолчанию используется `None`, для которого применяется стандартный алфавит Base64.3233Если *padded* равен True (по умолчанию), закодированные данные дополняются символом ‘=’ до размера, кратного 4. Если *padded* равен False, символы дополнения не добавляются.3435Если *wrapcol* не равен нулю, вставлять символ новой строки (`b'\n'`) после каждых *wrapcol* символов (максимум). Если *wrapcol* равен нулю (по умолчанию), новые строки не вставляются.3637Изменено в версии 3.15: Добавлены параметры *padded* и *wrapcol*.3839#### `base64.b64decode(s, altchars=None, validate=False, *, padded=True, canonical=False)`4041#### `base64.b64decode(s, altchars=None, validate=True, *, ignorechars, padded=True, canonical=False)`4243Декодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object), закодированный в Base64, или ASCII-строку *s* и возвращает декодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).4445Необязательный *altchars* должен быть [байтоподобным объектом](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строкой длины 2, которая задаёт альтернативный алфавит, используемый вместо символов `+` и `/`.4647Если *padded* равен True, последняя группа из 4 символов алфавита base64 должна быть дополнена символом ‘=’. Если *padded* равен False, дополнение не требуется и не распознаётся: символ ‘=’ рассматривается не как дополнение, а как символ вне алфавита; это означает, что он молча отбрасывается, когда *validate* равен False, или вызывает [`Error`](https://python-all.ru/3.16/library/binascii.html#binascii.Error), когда *validate* равен True, если только b’=’ не включён в *ignorechars*.4849Исключение [`binascii.Error`](https://python-all.ru/3.16/library/binascii.html#binascii.Error) вызывается, если *s* имеет неправильное дополнение.5051Если указан *ignorechars*, он должен быть [объектом, подобным байтам](https://python-all.ru/3.16/glossary.html#term-bytes-like-object), содержащим символы, которые следует игнорировать во входных данных, когда *validate* равен True. Если *ignorechars* содержит символ дополнения `'='`, символы дополнения, встречающиеся до конца закодированных данных, и избыточные символы дополнения будут игнорироваться. Значение по умолчанию *validate* равно `True`, если указан *ignorechars*, и `False` в противном случае.5253Если *validate* равен False, символы, не входящие ни в основной алфавит base64, ни (если не указан *ignorechars*) в альтернативный алфавит, отбрасываются до проверки дополнения; однако символы `+` и `/` сохраняют своё значение, если они не входят в *altchars* (в будущих версиях Python они будут отбрасываться).5455Если *validate* равен True, эти символы вне алфавита во входных данных приводят к [`binascii.Error`](https://python-all.ru/3.16/library/binascii.html#binascii.Error).5657Если *canonical* равен True, ненулевые биты дополнения отвергаются. Подробнее см. [`binascii.a2b_base64()`](https://python-all.ru/3.16/library/binascii.html#binascii.a2b_base64).5859Дополнительную информацию о строгой проверке base64 см. в [`binascii.a2b_base64()`](https://python-all.ru/3.16/library/binascii.html#binascii.a2b_base64)6061Изменено в версии 3.15: Добавлены параметры *canonical*, *ignorechars* и *padded*.6263Устарело с версии 3.15: Приём символов `+` и `/` с альтернативным алфавитом теперь устарел.6465#### `base64.standard_b64encode(s)`6667Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s* с использованием стандартного алфавита Base64 и возвращает закодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).6869#### `base64.standard_b64decode(s)`7071Декодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строку *s* с использованием стандартного алфавита Base64 и возвращает декодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).7273#### `base64.urlsafe_b64encode(s, *, padded=True)`7475Кодирует [объект, подобный байтам](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s*, используя алфавит, безопасный для URL и файловых систем, который заменяет `-` вместо `+` и `_` вместо `/` в стандартном алфавите Base64, и возвращает закодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes). Результат может по-прежнему содержать `=`, если *padded* равен True (по умолчанию).7677Изменено в версии 3.15: Добавлен параметр *padded*.7879#### `base64.urlsafe_b64decode(s, *, padded=False)`8081Декодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строку *s* с использованием алфавита, безопасного для URL и файловых систем, который подставляет `-` вместо `+` и `_` вместо `/` в стандартном алфавите Base64, и возвращает декодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).8283Изменено в версии 3.15: Добавлен параметр *padded*. Дополнение входных данных больше не требуется по умолчанию.8485Устарело с версии 3.15: Приём символов `+` и `/` теперь устарел.8687#### `base64.b32encode(s, *, padded=True, wrapcol=0)`8889Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s* с помощью Base32 и возвращает закодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).9091Если *padded* равен True (по умолчанию), закодированные данные дополняются символом ‘=’ до размера, кратного 8. Если *padded* равен False, символы дополнения не добавляются.9293Если *wrapcol* не равен нулю, вставлять символ новой строки (`b'\n'`) после каждых *wrapcol* символов (максимум). Если *wrapcol* равен нулю (по умолчанию), новые строки не добавляются.9495Изменено в версии 3.15: Добавлены параметры *padded* и *wrapcol*.9697#### `base64.b32decode(s, casefold=False, map01=None, *, padded=True, ignorechars=b'', canonical=False)`9899Декодирует закодированный Base32 [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строку *s* и возвращает декодированные [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).100101Необязательный флаг *casefold* указывает, допускается ли строчный алфавит на входе. Из соображений безопасности по умолчанию используется `False`.102103[**RFC 4648**](https://python-all.ru/3.16/library/base64.html) допускает необязательное отображение цифры 0 (ноль) на букву O (о) и необязательное отображение цифры 1 (один) на букву I (ай) или L (эль). Необязательный аргумент *map01*, если он не равен `None`, указывает, на какую букву должна отображаться цифра 1 (когда *map01* не равен `None`, цифра 0 всегда отображается на букву O). Из соображений безопасности по умолчанию используется `None`, так что 0 и 1 не допускаются на входе.104105Если *padded* равен True, последняя группа из 8 символов алфавита base32 должна быть дополнена символом ‘=’. Если *padded* равен False, дополнение не требуется и не распознаётся: символ ‘=’ рассматривается не как дополнение, а как символ вне алфавита; это означает, что он вызывает [`Error`](https://python-all.ru/3.16/library/binascii.html#binascii.Error), если только b’=’ не включён в *ignorechars*.106107*ignorechars* должен быть [объектом, подобным байтам](https://python-all.ru/3.16/glossary.html#term-bytes-like-object), содержащим символы для игнорирования во входных данных.108109Если *canonical* равен True, ненулевые биты дополнения отвергаются. Подробнее см. [`binascii.a2b_base32()`](https://python-all.ru/3.16/library/binascii.html#binascii.a2b_base32).110111Исключение [`binascii.Error`](https://python-all.ru/3.16/library/binascii.html#binascii.Error) возникает, если *s* имеет некорректное дополнение или если во входных данных присутствуют неалфавитные символы.112113Изменено в версии 3.15: Добавлены параметры *canonical*, *ignorechars* и *padded*.114115#### `base64.b32hexencode(s, *, padded=True, wrapcol=0)`116117Аналогично [`b32encode()`](https://python-all.ru/3.16/library/base64.html#base64.b32encode), но использует расширенный шестнадцатеричный алфавит, как определено в [**RFC 4648**](https://python-all.ru/3.16/library/base64.html).118119Добавлено в версии 3.10.120121Изменено в версии 3.15: Добавлены параметры *padded* и *wrapcol*.122123#### `base64.b32hexdecode(s, casefold=False, *, padded=True, ignorechars=b'', canonical=False)`124125Аналогично [`b32decode()`](https://python-all.ru/3.16/library/base64.html#base64.b32decode), но использует расширенный шестнадцатеричный алфавит, как определено в [**RFC 4648**](https://python-all.ru/3.16/library/base64.html).126127Эта версия не допускает отображения цифры 0 (ноль) на букву O (о) и цифры 1 (один) на букву I (ай) или L (эль); все эти символы входят в расширенный шестнадцатеричный алфавит и не являются взаимозаменяемыми.128129Добавлено в версии 3.10.130131Изменено в версии 3.15: Добавлены параметры *canonical*, *ignorechars* и *padded*.132133#### `base64.b16encode(s, *, wrapcol=0)`134135Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s* с помощью Base16 и возвращает закодированные [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).136137Если *wrapcol* не равен нулю, вставляется символ новой строки (`b'\n'`) не реже чем после каждых *wrapcol* символов. Если *wrapcol* равен нулю (по умолчанию), новые строки не добавляются.138139Изменено в версии 3.15: Добавлен параметр *wrapcol*.140141#### `base64.b16decode(s, casefold=False, *, ignorechars=b'')`142143Декодирует закодированный Base16 [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строку *s* и возвращает декодированные [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).144145Необязательный флаг *casefold* указывает, допускается ли строчный алфавит на входе. Из соображений безопасности по умолчанию используется `False`.146147*ignorechars* должен быть [байтоподобным объектом](https://python-all.ru/3.16/glossary.html#term-bytes-like-object), содержащим символы, которые следует игнорировать во входных данных.148149Исключение [`binascii.Error`](https://python-all.ru/3.16/library/binascii.html#binascii.Error) возникает, если *s* имеет некорректное дополнение или если во входных данных присутствуют неалфавитные символы.150151Изменено в версии 3.15: Добавлен параметр *ignorechars*.152153## Кодировки Base85154155Кодировка Base85 – это семейство алгоритмов, которые представляют четыре байта с помощью пяти ASCII-символов. Изначально реализованная в утилите Unix `btoa(1)`, её версия позже была принята Adobe в языке PostScript и стандартизирована в PDF 2.0 (ISO 32000-2). Эта версия, как в варианте `btoa`, так и в варианте PDF, реализована в [`a85encode()`](https://python-all.ru/3.16/library/base64.html#base64.a85encode).156157Отдельная версия, использующая другой набор выходных символов, была определена как первоапрельская шутка в [**RFC 1924**](https://python-all.ru/3.16/library/base64.html), но теперь используется Git и другим программным обеспечением. Эта версия реализована в [`b85encode()`](https://python-all.ru/3.16/library/base64.html#base64.b85encode).158159Наконец, третья версия, использующая еще один набор выходных символов, предназначенный для безопасного включения в строки языков программирования, определена ZeroMQ и реализована здесь в [`z85encode()`](https://python-all.ru/3.16/library/base64.html#base64.z85encode).160161Функции, представленные в этом модуле, различаются тем, как они обрабатывают следующее:162163- Нужно ли включать и ожидать обрамляющие маркеры `<~` и `~>`.164- Нужно ли разбивать входные данные на несколько строк.165- Набор ASCII-символов, используемых для кодирования.166- Компактное кодирование последовательностей пробелов и нулевых байтов.167- Кодирование байтов нулевого дополнения, применяемых к входным данным.168169Обратитесь к документации отдельных функций для получения дополнительной информации.170171#### `base64.a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False)`172173Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *b* с помощью Ascii85 и возвращает закодированные [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).174175*foldspaces* – необязательный флаг, который использует специальную короткую последовательность 'y' вместо 4 последовательных пробелов (ASCII 0x20), как поддерживается в 'btoa'. Эта возможность не поддерживается стандартным кодированием, используемым в PDF.176177Если *wrapcol* не равен нулю, вставляется символ новой строки (`b'\n'`) не реже чем после каждых *wrapcol* символов. Если *wrapcol* равен нулю (по умолчанию), новые строки не вставляются.178179*pad* управляет тем, сохраняется ли нулевое дополнение, примененное к концу входных данных, полностью в результирующем кодировании, как это делает `btoa`, создавая выходные данные, кратные 5 байтам. Это не является частью стандартного кодирования, используемого в PDF, поскольку не сохраняет длину данных.180181*adobe* управляет, обрамляется ли закодированная последовательность байтов маркерами `<~` и `~>`, как в строковом литерале PostScript base-85. Обратите внимание: хотя потоки ASCII85Decode в документах PDF *должны* завершаться `~>`, они *не должны* использовать начальный `<~`.182183Добавлено в версии 3.4.184185#### `base64.a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\x0b', canonical=False)`186187Декодирует Ascii85-закодированный [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строку *b* и возвращает декодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).188189*foldspaces* – это флаг, указывающий, следует ли принимать короткую последовательность 'y' как сокращение для 4 последовательных пробелов (ASCII 0x20). Эта возможность не поддерживается стандартным кодированием Ascii85, используемым в PDF и PostScript.190191*adobe* управляет наличием маркеров `<~` и `~>`. Хотя начальный `<~` не требуется, входные данные должны заканчиваться на `~>`, иначе будет вызвано [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError).192193*ignorechars* должен быть [байтоподобным объектом](https://python-all.ru/3.16/glossary.html#term-bytes-like-object), содержащим символы, которые следует игнорировать во входных данных. Он должен содержать только пробельные символы; по умолчанию содержит все пробельные символы ASCII.194195Если *canonical* имеет значение true, неканонические кодировки отклоняются. Подробнее см. [`binascii.a2b_ascii85()`](https://python-all.ru/3.16/library/binascii.html#binascii.a2b_ascii85).196197Добавлено в версии 3.4.198199Изменено в версии 3.15: Добавлен параметр *canonical*. Односимвольные конечные группы теперь всегда отклоняются как нарушение кодировки.200201#### `base64.b85encode(b, pad=False, *, wrapcol=0)`202203Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *b* с помощью base85 (используется, например, в двоичных diff-файлах в стиле git) и возвращает закодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).204205Входные данные дополняются `b'\0'`, чтобы их длина была кратна 4 байтам перед кодированием. Если *pad* истинно, все результирующие символы сохраняются в выходных данных, которые всегда будут кратны 5 байтам, и поэтому длина данных может не сохраниться при декодировании.206207Если *wrapcol* не равен нулю, вставляется символ новой строки (`b'\n'`) не реже чем после каждых *wrapcol* символов. Если *wrapcol* равен нулю (по умолчанию), новые строки не добавляются.208209Добавлено в версии 3.4.210211Изменено в версии 3.15: Добавлен параметр *wrapcol*.212213#### `base64.b85decode(b, *, ignorechars=b'', canonical=False)`214215Декодирует base85-закодированный [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строку *b* и возвращает декодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).216217*ignorechars* должен быть [байтоподобным объектом](https://python-all.ru/3.16/glossary.html#term-bytes-like-object), содержащим символы, которые следует игнорировать во входных данных.218219Если *canonical* имеет значение true, неканонические кодировки отклоняются. Подробнее см. [`binascii.a2b_base85()`](https://python-all.ru/3.16/library/binascii.html#binascii.a2b_base85).220221Добавлено в версии 3.4.222223Изменено в версии 3.15: Добавлены параметры *canonical* и *ignorechars*. Односимвольные конечные группы теперь всегда отклоняются как нарушение кодировки.224225#### `base64.z85encode(s, pad=False, *, wrapcol=0)`226227Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s* с помощью Z85 (используется в ZeroMQ) и возвращает закодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).228229Входные данные дополняются `b'\0'` таким образом, чтобы длина была кратна 4 байтам перед кодированием. Если *pad* равен true, все полученные символы сохраняются в выходных данных, длина которых всегда будет кратна 5 байтам, как того требует стандарт ZeroMQ.230231Если *wrapcol* не равен нулю, вставляется символ новой строки (`b'\n'`) не реже чем после каждых *wrapcol* символов. Если *wrapcol* равен нулю (по умолчанию), новые строки не добавляются.232233Добавлено в версии 3.13.234235Изменено в версии 3.15: Добавлен параметр *pad*.236237Изменено в версии 3.15: Добавлен параметр *wrapcol*.238239#### `base64.z85decode(s, *, ignorechars=b'', canonical=False)`240241Декодирует Z85-закодированный [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) или ASCII-строку *s* и возвращает декодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).242243*ignorechars* должен быть [байтоподобным объектом](https://python-all.ru/3.16/glossary.html#term-bytes-like-object), содержащим символы, которые следует игнорировать во входных данных.244245Если *canonical* имеет значение true, неканонические кодировки отклоняются. Подробнее см. [`binascii.a2b_base85()`](https://python-all.ru/3.16/library/binascii.html#binascii.a2b_base85).246247Добавлено в версии 3.13.248249Изменено в версии 3.15: Добавлены параметры *canonical* и *ignorechars*. Односимвольные конечные группы теперь всегда отклоняются как нарушение кодировки.250251## Устаревший интерфейс252253#### `base64.decode(input, output)`254255Декодирует содержимое бинарного файла *input* и записывает полученные бинарные данные в файл *output*. *input* и *output* должны быть [файловыми объектами](https://python-all.ru/3.16/glossary.html#term-file-object). *input* будет читаться до тех пор, пока `input.readline()` не вернёт пустой bytes-объект.256257#### `base64.decodebytes(s)`258259Декодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s*, который должен содержать одну или несколько строк данных, закодированных в base64, и возвращает декодированный [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).260261Добавлено в версии 3.1.262263#### `base64.encode(input, output)`264265Кодирует содержимое бинарного файла *input* и записывает полученные данные в кодировке base64 в файл *output*. *input* и *output* должны быть [файловыми объектами](https://python-all.ru/3.16/glossary.html#term-file-object). *input* будет читаться до тех пор, пока `input.read()` не вернёт пустой bytes-объект. `encode()` вставляет символ новой строки (`b'\n'`) после каждых 76 байт выходных данных, а также гарантирует, что выходные данные всегда заканчиваются новой строкой, в соответствии с [**RFC 2045**](https://python-all.ru/3.16/library/base64.html) (MIME).266267#### `base64.encodebytes(s)`268269Кодирует [байтоподобный объект](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *s*, который может содержать произвольные бинарные данные, и возвращает [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes), содержащее данные в кодировке base64, с символами новой строки (`b'\n'`), вставляемыми после каждых 76 байт выходных данных, и гарантирует наличие завершающего перевода строки в соответствии с [**RFC 2045**](https://python-all.ru/3.16/library/base64.html) (MIME).270271Добавлено в версии 3.1.272273Пример использования модуля:274275```python276>>> import base64277>>> encoded = base64.b64encode(b'data to be encoded')278>>> encoded279b'ZGF0YSB0byBiZSBlbmNvZGVk'280>>> data = base64.b64decode(encoded)281>>> data282b'data to be encoded'283```284285## Вопросы безопасности286287Новый раздел по вопросам безопасности был добавлен в [**RFC 4648**](https://python-all.ru/3.16/library/base64.html) (раздел 12); рекомендуется ознакомиться с разделом безопасности для любого кода, развёртываемого в рабочей среде.288289> **См. также**290>291> **Модуль [`binascii`](https://python-all.ru/3.16/library/binascii.html#module-binascii)**292>293> Вспомогательный модуль, содержащий преобразования ASCII-в-двоичный и двоичный-в-ASCII.294>295> **[**RFC 1521**](https://python-all.ru/3.16/library/base64.html) – MIME (Многоцелевые расширения интернет-почты) Часть 1: Механизмы указания и описания формата тел интернет-сообщений**296>297> Раздел 5.2, «Base64 Content-Transfer-Encoding», содержит определение кодировки base64.298>299> **[ISO 32000-2 Формат переносимых документов – Часть 2: PDF 2.0](https://python-all.ru/3.16/library/base64.html)**300>301> Раздел 7.4.3, «Фильтр ASCII85Decode», содержит определение кодировки Ascii85, используемой в PDF и PostScript, включая выходной набор символов и подробности сохранения длины данных с помощью нулевого дополнения и частичных выходных групп.302>303> **[ZeroMQ RFC 32/Z85](https://python-all.ru/3.16/library/base64.html)**304>305> Раздел «Формальная спецификация» описывает набор символов, используемый в Z85.306