18.12. base64 — RFC 3548:Base16、Base32、Base64 数据编码 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/base64
跳转至:导航、​搜索

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 文件。 inputoutput 必须是文件对象或模仿文件对象接口的对象。 input 将被读取,直到 input.read() 返回一个空字符串。
base64.decodestring(s)
对字符串 s 进行解码,该字符串必须包含一行或多行 base64 编码数据,并返回一个包含结果二进制数据的字符串。
base64.encode(input, output)
input 文件的内容进行编码,并将生成的 base64 编码数据写入 output 文件。 inputoutput 必须是文件对象或模仿文件对象接口的对象。 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'

也可以看看

模块 binascii
包含 ASCII 到二进制和二进制到 ASCII 转换的支持模块。
RFC 1521 - MIME(多用途互联网邮件扩展)第一部分:指定和描述互联网消息体格式的机制
第 5.2 节“Base64 内容传输编码”提供了 base64 编码的定义。