Python
的
base64
模块中的加解密函数
以及加密算法
一.
Base64
模块简介
Base64
是一种基于
64
个可打印字符来表示二进制数据的表示方法。
Base64
常用于在通常处理文本数据的场合,表示、传输、存储一些二进制数据(或不可
打印的字符串)。包括
MIME
的
,
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
编解码的,实际上也是调用的前一组函数。
二.加解密函数