python模块介绍- base64 RFC 3548: Base16, Base32, Base64数据编码

长平狐 发布于 2013/12/25 17:23
阅读 596
收藏 1

python模块介绍- base64 RFC 3548: Base16, Base32, Base64数据编码 

简介

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。由于2的6次方等于64,所以每6个位元为一个单元,对应某个可打印字符。三个字节有24个位元,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。它可用来作为电子邮件的传输编码。在Base64中的可打印字符包括字母A-Z、a-z、数字0-9,这样共有62个字符,此外两个可打印符号在不同的系统中而不同。之后在6位的前面补两个0,形成8位一个字节的形式。一些如uuencode的其他编码方法,和之后binhex的版本使用不同的64字符集来代表6个二进制数字,但是它们不叫Base64。

Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据。包括MIME的email,email via MIME,在XML中存储复杂数据

Python Base64模块提供了RFC3548中的数据编码和解码(转换二进制数据为适合明文协议传输的ASCII序列,如RFC3548中指定。该标准定义了Base16,Base32和Base64算法,编码和解码的任意二进制字符串转换为文本字符串,这样就可以通过电子邮件安全发送,作为网址的一部分,或包含在HTTP POST请求中。

Base64模块提供两个接口。新式接口支持使用三个字母的编码和解码的字符串对象。传统接口提供了编码和解码文件对象和字符串,但只使用了标准的Base64字母。传统接口这里不做介绍。

base64、base32、base16可以分别编码转化8位字节为6位、5位、4位。16,32,64分别表示用多少个字符来编码。

更多base64的资料,参见http://zh.wikipedia.org/wiki/Base64http://tools.ietf.org/html/rfc822http://tools.ietf.org/html/rfc1421http://tools.ietf.org/html/rfc2045

  • 功能:RFC 3548: Base16, Base32, Base64数据编码。
  • 类型:标准模块
  • 相关模块:
    1. binhex 标准模块。
    2. uu 标准模块。
    3. quopri 标准模块。
    4. binascii 标准模块。

Base64编码解码

base64.b64encode(s[, altchars]):使用Base64编码字符串。s是要编码的字符串。altchars是用来替换+和/的字符串,在url和文件系统中它们有特殊含义,通常需要替换。

base64.b64decode(s[, altchars]): 解码Base64编码的字符串。s为要解码的字符串。altchars和b64encode相同。

请看python模块介绍中的实例:

>>> import base64
>>> encoded = base64.b64encode('data to be encoded')
>>> encoded
'ZGF0YSB0byBiZSBlbmNvZGVk'
>>> data = base64.b64decode(encoded)
>>> data
'data to be encoded'

下面是维基百科中的实例,包含了填充符:

>>> import base64
>>> s = '''Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.'''
>>> encoded_data = base64.b64encode(s)
>>> print(encoded_data)
TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
>>> base64.b64decode(encoded_data)
'Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.'

Base64默认会使用+和/, 但是这2个字符在url中也有特殊含义。使用urlsafe可以解决这个问题。+替换为-,/替换为_。

以下部分参见下面链接

本文地址

参考资料


原文链接:http://blog.csdn.net/oychw/article/details/17513875
加载中
返回顶部
顶部