Python中的base64模块

本文介绍Python 2.7中的base64模块,该模块提供了基于rfc3548的Base16, 32, 64编解码的接口。官方文档,参考这里

  该模块提供两套接口,传统接口基于rfc1521的Base64,当前接口基于rfc3548的Base16/32/64编码规范,本文只介绍当前的接口。

  当前接口在Python 2.4中就被引进,关于Base64编码格式提供了以下六种接口,便于高效灵活地实现需要的编解码工作。

1. b64encode(s, altchars=None)

2. b64decode(s, altchars=None)

3. standard_b64encode(s)

4. standard_b64decode(s)

5. urlsafe_b64encode(s)

6. urlsafe_b64decode(s)

  其中以"*encode"结尾的方法用于将二进制串转为base64编码格式的字符串,以“*decode”结尾的方法用于将base64格式的字符串重新转为二进制串。

  我们详细查看前两个方法,注意到b64encode()和b64decode()接收同样形式的参数。其中 s 是要编/解码的字符串;默认参数altchars的可选值必须是长度至少两字节的字符串(第二个字符后的内容将被忽略),该方法表示在编/解码过程中将使用参数altchars中的前两个字符替换标准Base64字符集中的‘+‘和‘/‘。

  因此方法3和4中的base64.standard_b64encode(s)和base64.standard_b64decode(s)等价于base64.b64encode(s)和base64.b64decode(s)。而方法5和6中的base64.urlsafe_b64encode(s)和base64.urlsafe_b64decode(s)分别等价于base64.b64encode(s , ‘-_‘)和base64.b64decode(s , ‘-_‘),即在编/解码过程中使用‘-‘和‘_‘替代标准Base64字符集中的‘+‘和‘/‘,生成可以在URL中使用的Base64格式文本。

  使用示例:

 1 >>> import base64
 2 >>> print base64.b64encode(‘Hello, I am Darren!‘)
 3 SGVsbG8sIEkgYW0gRGFycmVuIQ==
 4 >>>
 5 >>> print base64.b64decode(‘SGVsbG8sIEkgYW0gRGFycmVuIQ==‘)
 6 Hello, I am Darren!
 7 >>>
 8 >>> print base64.b64encode(‘i\xb7\x1d\xfb\xef\xff‘)
 9 abcd++//
10 >>>
11 >>> print base64.b64encode(‘i\xb7\x1d\xfb\xef\xff‘, ‘-_‘)
12 abcd--__
13 >>>
14 >>> print base64.urlsafe_b64encode(‘i\xb7\x1d\xfb\xef\xff‘)
15 abcd--__
16 >>>
17 >>> base64.urlsafe_b64decode(‘adcd--__‘)
18 ‘i\xb7\x1d\xfb\xef\xff‘

  本模块还提供了Base32和Base16编解码接口:  

1. b32encode(s)    

2. b32decode(s, casefold=False, map01=None)  

  Base16编解码:

1. b16encode(s)

2. b16decode(s, casefold=False)

  其中参数s都是要编/解码的字符串,关于Base16/32编码规范,请参考rfc4648rfc3548,本文只关注Base64。

时间: 2024-12-12 08:08:30

Python中的base64模块的相关文章

Python中的random模块,来自于Capricorn的实验室

Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 random.uniform random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限.如果a > b,则生成的随机数n: a <= n <= b.如果 a <

python中查看可用模块

1.这种方式的问题是,只列出当前import进上下文的模块. 进入python命令行.输入以下代码: >>>import sys >>>sys.modules 2.在python命令行下输入: >>>help() help>modulespython中查看可用模块,布布扣,bubuko.com

python中动态导入模块

如果导入的模块不存在,Python解释器会报 ImportError 错误: >>> import something Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named something 有的时候,两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了Strin

Python中的random模块

Python中的random模块 (转载自http://www.cnblogs.com/yd1227/archive/2011/03/18/1988015.html) Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 random.uniform random.uniform的函数原型为:random.uniform(a, b),

解决linux系统下python中的matplotlib模块内的pyplot输出图片不能显示中文的问题

问题: 我在ubuntu14.04下用python中的matplotlib模块内的pyplot输出图片不能显示中文,怎么解决呢? 解决: 1.指定默认编码为UTF-8: 在python代码开头加入如下代码 import sys reload(sys) sys.setdefaultencoding('utf-8') 2.确认你ubuntu系统环境下拥有的中文字体文件: 在终端运行命令"fc-list :lang=zh",得到自己系统的中文字体 命令输出如下: /usr/share/fon

(转)Python中的random模块

Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0 random.uniform random.uniform的函数原型为:random.uniform(a, b),用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限.如果a > b,则生成的随机数n: a <= n <= b.如果 a <

转载:python中的copy模块(浅复制和深复制)

主要是介绍python中的copy模块. copy模块包括创建复合对象(包括列表.元组.字典和用户定义对象的实例)的深浅复制的函数. ########copy(x)########创建新的复合对象并通过引用复制x的成员来创建x的浅复制.更加深层次说,它复制了对象,但对于对象中的元素,依然使用引用.对于内置类型,此函数并不经常使用.而是使用诸如list(x), dict(x), set(x)等调用方式来创建x的浅复制,要知道像这样直接使用类型名显然比使用copy()快很多.但是它们达到的效果是一样

Python中进行Base64编码和解码

Base64编码是一种“防君子不防小人”的编码方式.广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容易被破解,仅适用于加密非关键信息的场合Python中进行Base64编码和解码>>> import base64>>> s = '我是字符串'>>> a = base64.b64encode(s)>>>

Python中的logging模块【转】

基本用法 下面的代码展示了logging最基本的用法. 1 # -*- coding: utf-8 -*- 2 3 import logging 4 import sys 5 6 # 获取logger实例,如果参数为空则返回root logger 7 logger = logging.getLogger("AppName") 8 9 # 指定logger输出格式 10 formatter = logging.Formatter('%(asctime)s %(levelname)-8s: