python中加密解密函数文档
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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编码后的字符除了英文字母和数字外还有三个字符‘+’, ‘/’, ’ =’, 其中’=’只是为了补全编码后的字符数为4的整数,而’+’和’/’在一些情况下需要被替换的,b64encode和b64decode正是提供了这样的功能。至于什么情况下’+’和’/’需要被替换,最常见的就是对url进行base64编码的时候。urlsafe_b64encode和urlsafe_b64decode 一组,这个就是用来专门对url进行base64编解码的,实际上也是调用的前一组函数。
二.加解密函数
1.b16decode(s, casefold=False)函数
功能:解码一个Base16编码的字符串
说明:s是要解码的字符串,casefold(可选)是一个标志,指定是否输入小写字母,考虑到安全,默认值是false。这个函数会返回解码后的字符串,如果s发生错误或者不是字符串,那么返回TypeError。
2.b16encode(s)函数
功能:编码一个Base16编码的字符串
说明:s是要进行编码的字符串,函数返回编码后的字符串。
代码:结果:
3.b32decode(s, casefold=False, map01=None)函数
功能:解码一个Base32编码的字符串
说明:同b16decode(s, casefold=False),可选参数’map01’(默认是None),如果它不是None的话,数字0会被映射成字母O,数字1会被映射成字母L或者I
4.b32encode(s)函数
功能:一个字符串使用Base32编码
代码:
结果:因为有这句话
会出现如下错误:
这是因为这句话中第二个参数是False,不接收小写字母,会出现错误,第二个参数如果是True的话,接收小写字母,不会出现错误。注释掉这句话的结果是:(结果正确)
5.b645.decode(s, altchars=None)函数
功能:解码一个Base64的字符串,有关可选参数altchars请参看
替换符号字符的功能
6.b64encode(s, altchars=None)函数
功能:编码一个Base64的字符串,有关可选参数altchars请参看
替换符号字符的功能
7.decodestring(s)函数
功能:解码一个字符串,它要包含一行或多行base64的加密数据返回解码后的二进制数据。
8.encodestring(s)函数
功能:编码一个字符串,编码成多行的base-64数据。
代码:结果:
9.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。