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 填充错误。

如果 validateFalse (默认值),在填充检查之前,既不在普通的base-64字母表中也不在备选字母表中的字符将被丢弃。如果 validateTrue ,输入中的这些非字母字符将导致 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 encoded bytes. 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 文件。 inputoutput 必须是 file objects . input 将被读取到 input.readline() 返回空字节对象。

base64.decodebytes(s)

解码 bytes-like object s ,它必须包含一行或多行base64编码数据,并返回已解码的 bytes .

3.1 新版功能.

base64.encode(input, output)

对二进制文件的内容进行编码 input 文件并将生成的base64编码数据写入 output 文件。 inputoutput 必须是 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'

参见

模块 binascii

支持包含ASCII到二进制和二进制到ASCII转换的模块。

RFC 1521 -多用途Internet邮件扩展第1部分:指定和描述Internet邮件正文格式的机制

第5.2节“base64内容传输编码”提供了base64编码的定义。