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编解码的,实际上也是调用的前一组函数。
功能:解码一个Base16编码的字符串
说明:s是要解码的字符串,casefold(可选)是一个标志,指定是否输入小写字母,考虑到安全,默认值是false。 这个函数会返回解码后的字符串,如果s发生错误或者不是字符串,那么返回TypeError。
功能:编码一个Base16编码的字符串
说明:s是要进行编码的字符串,函数返回编码后的字符串。
代码: 结果:
2.b32decode(s, casefold=False, map01=None) 函数
功能: 解码一个Base32编码的字符串
说明: 同b16decode(s, casefold=False) , 可选参数’map01’(默认是None),如果它不是None的话,数字0会被映射成字母O,数字1会被映射成字母L或者I
功能:一个字符串使用Base32编码
代码:
结果:因为有这句话
会出现如下错误:
这是因为 这句话中第二个参数是False,不接收小写字母,会出现错误,第二个参数如果是True的话, 接收小写字母,不会出现错误。注释掉这句话的结果是:(结果正确)
功能:解码一个Base64的字符串,有关可选参数altchars请参看
替换符号字符的功能
功能:编码一个Base64的字符串,有关可选参数altchars请参看
替换符号字符的功能
功能:解码一个字符串,它要包含一行或多行base64的加密数据返回解码后的二进制数据。
功能:编码一个字符串,编码成多行的base-64数据。
代码:
结果:
功能:编码一个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