python中base64模块的加解密函数

Base64模块简介

 

Base64是一种基于64个可打印字符来表示二进制数据的表示方法。Base64常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据(或不可打印的字符串)。包括MIME的email,email via MIME, 在XML中存储复杂数据。

 

在邮件中的用途:

在MIME格式的电子邮件中,base64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。使用时,在传输编码方式中指定base64。使用的字符包括大小写字母各26个,加上10个数字,和加号“+”,斜杠“/”,一共64个字符,等号“=”用来作为后缀用途。

在URL中的用途:

标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式, 而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“*”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。简单的说:就是让字符串了可以安全的通过URL传输,那句就是把原先base64编码后的字符串中的 + 换成 - , / 换成 _  ,  = 则保留。

另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”在正则表达式中都可能具有特殊含义。

 

一.  base64模块中的加解密函数

加解密函数中替换符号字符的功能:

因为base64编码后的字符除了英文字母和数字外还有三个字符 ‘ + ’,  ‘ / ’,  ’ = ’, 其中  ’ = ’只是为了补全编码后的字符数为4的整数,而’ + ’和’ / ’在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什么情况下’ + ’和’ / ’需要被替换,最常见的就是对url进行base64编码的时候。urlsafe_b64encode和urlsafe_b64decode 一组,这个就是用来专门对url进行base64编解码的,实际上也是调用的前一组函数。

 

  1. b16decode(s, casefold=False) 函数

功能:解码一个Base16编码的字符串

说明:s是要解码的字符串,casefold(可选)是一个标志,指定是否输入小写字母,考虑到安全,默认值是false。 这个函数会返回解码后的字符串,如果s发生错误或者不是字符串,那么返回TypeError。

 

 

  1. b16encode(s) 函数

功能:编码一个Base16编码的字符串

说明:s是要进行编码的字符串,函数返回编码后的字符串。

代码:                           结果:

 

 

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

功能: 解码一个Base32编码的字符串

说明: 同b16decode(s, casefold=False) , 可选参数’map01’(默认是None),如果它不是None的话,数字0会被映射成字母O,数字1会被映射成字母L或者I

 

  1. b32encode(s) 函数

功能:一个字符串使用Base32编码

 

代码:                                                          

 

 结果:因为有这句话

会出现如下错误:

 

这是因为 这句话中第二个参数是False,不接收小写字母,会出现错误,第二个参数如果是True的话, 接收小写字母,不会出现错误。注释掉这句话的结果是:(结果正确)

 

  1. b645.decode(s, altchars=None) 函数

功能:解码一个Base64的字符串,有关可选参数altchars请参看

替换符号字符的功能

 

  1. b64encode(s, altchars=None) 函数

功能:编码一个Base64的字符串,有关可选参数altchars请参看

替换符号字符的功能

 

  1. decodestring(s) 函数

功能:解码一个字符串,它要包含一行或多行base64的加密数据返回解码后的二进制数据。

 

  1. encodestring(s) 函数

功能:编码一个字符串,编码成多行的base-64数据。

代码:                                                  

  结果:

 

 

  1. encode(input, output) 函数

功能:编码一个input文件,把结果的二进制数据读取到output中,

input和output是文件,当input读取到空字符串的时候返回。

10.decode(input, output) 函数

功能:解码一个input文件,把结果的二进制数据读取到output中,

input和output是文件,当input读取到空字符串的时候返回。

代码:

 11.urlsafe_b64decode(s) 函数

功能:解码一个使用url-safe的base64的字母表的字符串,详情参看base64在URL中的用途

 

12.urlsafe_b64encode(s) 函数

功能:编码一个使用url-safe的base64的字母表的字符串,详情参看base64在URL中的用途。

代码:                                                                              

 

结果:

 

 

二.python中的md5和SHA1加密算法使用

MD5
       MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。

SHA1

      SHA1的全称是Secure Hash Algorithm(安全哈希算法) , SHA-1比MD5多32位密文,所以更安全。

用法实例:

python中的hashlib模块是个专门提供hash算法的库,现在里面包括md5, sha1, sha224, sha256, sha384, sha512,使用非常简单、方便。用法如下:

 

 

注:with语句的作用:试图打开一个文件,如果正常把值返回给fp。

三. 使用python进行加密解密AES算法

 

在此我们将使用到PyCrypto模块,可以访问 http://www.pycrypto.org/ 来获得此模块。该模块包括多种加密算法,如AES、MD5、SHA等。

代码:

 


From: http://www.cnblogs.com/changzhi/archive/2013/01/23/2873377.html

你可能感兴趣的:(DATA,ENCODE,FORMAT)