base64
——base16、base32、base64、base85数据编码¶
源代码: Lib/base64.py
该模块提供将二进制数据编码为可打印的ASCII字符以及将此类编码解码回二进制数据的功能。它为中指定的编码提供编码和解码功能。 RFC 3548 它定义了base16、base32和base64算法,以及实际上的标准ascii85和base85编码。
这个 RFC 3548 编码适用于对二进制数据进行编码,以便它可以通过电子邮件安全地发送,用作URL的一部分,或作为HTTP POST请求的一部分包含。编码算法与 uuencode 程序。
本模块提供两个接口。现代接口支持编码 bytes-like objects 向ASCII bytes
和解码 bytes-like objects 或包含ascii to的字符串 bytes
. 在中定义的两个base-64字母 RFC 3548 支持(普通,URL和文件系统安全)。
传统接口不支持从字符串解码,但它提供了与字符串进行编码和解码的函数 file objects . 它只支持base64标准字母表,并根据 RFC 2045 . 请注意,如果您正在寻找 RFC 2045 支持你可能想看看 email
改为打包。
在 3.3 版更改: 现代接口的解码功能现在只接受ASCII Unicode字符串。
在 3.4 版更改: 任何 bytes-like objects 现在已被此模块中的所有编码和解码功能接受。增加了ascii85/base85支持。
现代接口提供:
- base64.b64encode(s, altchars=None)¶
编码 bytes-like object s 使用base64并返回编码的
bytes
.可选的 altchars 必须是 bytes-like object 长度至少为2(忽略其他字符),它为
+
and/
characters. This allows an application to e.g. generate URL or filesystem safe Base64 strings. The default is `` 无``,使用标准base64字母表。
- base64.b64decode(s, altchars=None, validate=False)¶
解码base64编码 bytes-like object 或ASCII字符串 s 并返回解码的
bytes
.可选的 altchars 必须是 bytes-like object 或长度至少为2的ASCII字符串(忽略其他字符),该字符串指定使用的可选字母表,而不是
+
和/
字符。A
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和文件系统安全字母表,它可以替代
-
instead of+
and_
instead of/
in the standard Base64 alphabet, and return the encodedbytes
. The result can still contain `` = ''.
- 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 4648 允许数字0(零)到字母O(哦)的可选映射,以及数字1(一)到字母I(眼)或字母L(el)的可选映射。可选参数 MAP01 何时不
None
,指定数字1应映射到哪个字母(当 MAP01 不是None
,数字0始终映射到字母O)。出于安全目的,默认值为None
,以便在输入中不允许0和1。A
binascii.Error
如果 s 填充错误或输入中存在非字母字符。
- base64.b32hexencode(s)¶
类似
b32encode()
但使用扩展的十六进制字母表,如 RFC 4648 .3.10 新版功能.
- base64.b32hexdecode(s, casefold=False)¶
类似
b32decode()
但使用扩展的十六进制字母表,如 RFC 4648 .此版本不允许数字0(零)到字母O(oh)和数字1(一)到字母I(眼睛)或字母L(el)的映射,所有这些字符都包含在扩展的十六进制字母表中,不可互换。
3.10 新版功能.
- base64.b16encode(s)¶
编码 bytes-like object s 使用base16并返回编码的
bytes
.
- base64.b16decode(s, casefold=False)¶
解码base16编码 bytes-like object 或ASCII字符串 s 并返回解码的
bytes
.可选的 casefold 指定是否接受小写字母作为输入的标志。出于安全目的,默认值为
False
.A
binascii.Error
如果 s 填充错误或输入中存在非字母字符。
- base64.a85encode(b, *, foldspaces=False, wrapcol=0, pad=False, adobe=False)¶
编码 bytes-like object b 使用ascii85并返回编码的
bytes
.foldspaces 是一个可选标志,它使用特殊的短序列“y”而不是由“btoa”支持的4个连续空格(ascii 0x20)。“标准”ascii85编码不支持此功能。
格拉波尔 控制输出是否应具有换行符 (
b'\n'
)添加的字符。如果这是非零的,那么每个输出行最多只能有这么多字符。pad 控制编码前输入是否填充为4的倍数。请注意
btoa
执行总是垫。adobe 控制编码的字节序列是否使用
<~
和~>
,由Adobe实现使用。3.4 新版功能.
- base64.a85decode(b, *, foldspaces=False, adobe=False, ignorechars=b' \t\n\r\x0b')¶
解码编码的ascii85 bytes-like object 或ASCII字符串 b 并返回解码的
bytes
.foldspaces 是一个标志,用于指定是否应将“y”短序列接受为4个连续空格(ascii 0x20)的缩写。“标准”ascii85编码不支持此功能。
adobe 控制输入序列是否为Adobe Ascii85格式(即,使用<~和~>进行边框)。
点火器 应该是 bytes-like object 或包含要从输入中忽略的字符的ASCII字符串。这应该只包含空白字符,并且默认情况下包含ASCII中的所有空白字符。
3.4 新版功能.
- base64.b85encode(b, pad=False)¶
编码 bytes-like object b 使用base85(如git样式的二进制diff中使用的)并返回编码的
bytes
.如果 pad 为真,输入被填充
b'\0'
所以它的长度是编码前4字节的倍数。3.4 新版功能.
- base64.b85decode(b)¶
解码base85编码 bytes-like object 或ASCII字符串 b 并返回解码的
bytes
. 如有必要,将隐式删除填充。3.4 新版功能.
传统接口:
- base64.decode(input, output)¶
解码二进制文件的内容 input 文件并将生成的二进制数据写入 output 文件。 input 和 output 必须是 file objects . input 将被读取到
input.readline()
返回空字节对象。
- base64.decodebytes(s)¶
解码 bytes-like object s ,它必须包含一行或多行base64编码数据,并返回已解码的
bytes
.3.1 新版功能.
- base64.encode(input, output)¶
对二进制文件的内容进行编码 input 文件并将生成的base64编码数据写入 output 文件。 input 和 output 必须是 file objects . input 将被读取到
input.read()
返回空字节对象。encode()
插入换行符 (b'\n'
)每输出76字节,并确保输出始终以换行符结尾,如 RFC 2045 (哑剧)
- base64.encodebytes(s)¶
编码 bytes-like object s ,它可以包含任意二进制数据,并返回
bytes
包含base64编码数据,带换行符 (b'\n'
)在每76字节输出后插入,并确保有一个尾随新行,如 RFC 2045 (哑剧)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'