On this page
18.12. base64 — RFC 3548:Base16,Base32,Base64 数据编码
此模块提供 RFC 3548中指定的数据编码和解码。该标准定义了用于将任意二进制字符串编码和解码为文本字符串的 Base16,Base32 和 Base64 算法,这些文本字符串可以pass电子邮件安全地发送,用作 URL 的一部分或作为 HTTP POST 请求的一部分。编码算法与 uuencode 程序不同。
此模块提供两个接口。现代界面支持使用在 RFC 3548中定义的 base-64 字母(正常,URL 和文件系统安全)来编码和解码字符串对象。旧版界面提供了与文件状对象以及字符串之间的编码和解码,但仅使用 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 字母中用
-
代替+
和_
代替/
。结果仍然可以包含=
。
- 使用安全于 URL 和文件系统的字母对字符串* s *进行编码,该字母在标准 Base64 字母中用
base64.
urlsafe_b64decode
(* s *)- 使用 URL 和文件系统安全字母对字符串* s *进行解码,该字母在标准 Base64 字母中用
-
代替+
和_
代替/
。
- 使用 URL 和文件系统安全字母对字符串* s *进行解码,该字母在标准 Base64 字母中用
base64.
b32encode
(* s *)- 使用 Base32 编码字符串。 * s *是要编码的字符串。返回编码后的字符串。
base64.
b32decode
(* s * [,* casefold * [,* map01 *]])- 解码 Base32 编码的字符串。
- s 是要解码的字符串。可选的 casefold *是一个标志,指定是否可以接受小写字母作为 Importing。为了安全起见,默认值为
False
。
RFC 3548允许将数字 0(零)Map 到字母 O(哦),并允许将数字 1(一个)Map 到字母 I(眼睛)或字母 L(el)。可选参数* map01 如果不是None
,则指定数字 1 应该 Map 到哪个字母(当 map01 *不是None
时,数字 0 总是 Map 到字母 O)。为了安全起见,默认值为None
,因此 Importing 中不允许使用 0 和 1.
返回解码后的字符串。如果错误地填充* s *或字符串中存在非字母字符,则引发TypeError。
base64.
b16encode
(* s *)- 使用 Base16 编码字符串。
- s *是要编码的字符串。返回编码后的字符串。
base64.
b16decode
(* s * [,* casefold *])- 解码 Base16 编码的字符串。
- s 是要解码的字符串。可选的 casefold *是一个标志,指定是否可以接受小写字母作为 Importing。为了安全起见,默认值为
False
。
返回解码后的字符串。如果错误地填充* s *或字符串中存在非字母字符,则引发TypeError。
旧版界面:
base64.
decode
(* input , output *)- 解码* input 文件的内容,并将生成的二进制数据写入 output *文件。 * input 和 output *必须是文件对象或模仿文件对象接口的对象。 * input *将被读取,直到
input.read()
返回一个空字符串。
- 解码* input 文件的内容,并将生成的二进制数据写入 output *文件。 * input 和 output *必须是文件对象或模仿文件对象接口的对象。 * input *将被读取,直到
base64.
decodestring
(* s *)- 解码字符串* s *,该字符串必须包含一行或多行 base64 编码的数据,然后返回包含结果二进制数据的字符串。
base64.
encode
(* input , output *)- 对* input 文件的内容进行编码,并将生成的 base64 编码数据写入 output *文件。 * input 和 output *必须是文件对象或模仿文件对象接口的对象。 * input *将被读取,直到
input.read()
返回一个空字符串。 encode()返回编码的数据以及结尾的换行符('\n'
)。
- 对* input 文件的内容进行编码,并将生成的 base64 编码数据写入 output *文件。 * input 和 output *必须是文件对象或模仿文件对象接口的对象。 * input *将被读取,直到
base64.
encodestring
(* s *)- 对字符串* s *进行编码,该字符串可以包含任意二进制数据,然后返回一个字符串,其中包含一或多行以 base64 编码的数据。 encodestring()返回一个字符串,该字符串包含一行或多行以 base64 编码的数据,该数据始终包含一个额外的尾随换行符(
'\n'
)。
- 对字符串* s *进行编码,该字符串可以包含任意二进制数据,然后返回一个字符串,其中包含一或多行以 base64 编码的数据。 encodestring()返回一个字符串,该字符串包含一行或多行以 base64 编码的数据,该数据始终包含一个额外的尾随换行符(
该模块的示例用法:
>>> import base64
>>> encoded = base64.b64encode('data to be encoded')
>>> encoded
'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
'data to be encoded'