18.12. base64 — RFC 3548:Base16、Base32、Base64 数据编码 — Python 文档
18.12. base64 — RFC 3548:Base16、Base32、Base64 数据编码
该模块提供 RFC 3548 中指定的数据编码和解码。 该标准定义了 Base16、Base32 和 Base64 算法,用于将任意二进制字符串编码和解码为可以通过电子邮件安全发送、用作 URL 的一部分或作为 HTTP POST 请求的一部分的文本字符串。 编码算法与uuencode程序不同。
该模块提供了两个接口。 现代接口支持使用 RFC 3548(正常,以及 URL 和文件系统安全)中定义的两种 base-64 字母对字符串对象进行编码和解码。 遗留接口提供了对类文件对象和字符串的编码和解码,但仅使用 Base64 标准字母表。
Python 2.4 中引入的现代接口提供:
- base64.b64encode(s[, altchars])
使用 Base64 编码字符串。
s 是要编码的字符串。 可选的 altchars 必须是长度至少为 2(忽略附加字符)的字符串,它为
+
和/
字符指定了一个替代字母表。 这允许应用程序例如 生成 URL 或文件系统安全的 Base64 字符串。 默认值为None
,使用标准 Base64 字母表。返回编码后的字符串。
- base64.b64decode(s[, altchars])
解码 Base64 编码的字符串。
s 是要解码的字符串。 可选的 altchars 必须是长度至少为 2(忽略附加字符)的字符串,它指定使用替代字母表代替
+
和/
字符。返回解码后的字符串。 如果 s 填充不正确,则会引发
TypeError
。 既不在正常 base-64 字母表中也不在替代字母表中的字符在填充检查之前被丢弃。
- base64.standard_b64encode(s)
- 使用标准 Base64 字母对字符串 s 进行编码。
- base64.standard_b64decode(s)
- 使用标准 Base64 字母表解码字符串 s。
- base64.urlsafe_b64encode(s)
- 使用 URL 和文件系统安全字母表对字符串 s 进行编码,用
-
代替+
和_
代替/
在标准 Base64 字母表中。 结果仍然可以包含=
。
- base64.urlsafe_b64decode(s)
- 使用 URL 和文件系统安全字母表解码字符串 s,它用
-
代替+
和_
代替/
在标准 Base64 字母表中。
- base64.b32encode(s)
- 使用 Base32 编码字符串。 s 是要编码的字符串。 返回编码后的字符串。
- base64.b32decode(s[, casefold[, map01]])
解码 Base32 编码的字符串。
s 是要解码的字符串。 可选的 casefold 是一个标志,用于指定是否可以接受小写字母作为输入。 出于安全考虑,默认值为
False
。RFC 3548 允许将数字 0(零)可选映射到字母 O(哦),以及将数字 1(一)可选映射到字母 I( eye) 或字母 L (el)。 可选参数 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'