1.简介
base64 --- url编码
- 正常的url中只能包含ASCLL字符的,也就是字母,字母和一些符号
- url编码就是一种用来避免url出现特殊字符(汉字之类的)编码方式
base64 是一种 用64个字符年表示任意二进制数据的方法
(将二进制数据编码成ascall字符)使用了A-Z,a-z,0-9,/ 这64个字符
2.特点
用来将非ascall字符的数据转化成ascall字符的一种方法
常用对url的编码
可以将不可打印的·1二进制数据转化成为可打印的字符串
3.base64模块 API
# Base64编码后的数据可能会含有+ / 两种符号(无法网络传输)。
# 如果编码后的数据常用于url或文件的系统路径中,就可能到最后bug;
# 所以base64专门提供了编码url的方法
# 对二进制数据进行base64编码
base64.b64encode()
# 对base64编码数据进行解码
base64.b64decode()
"""
二者区别在于
url加密编码时b64encode会出现“+”, “/”符号
urlsafe_b64encode不会出现
"""
# 对url二进制数据进行base64编码
base64.urlsafe_b64encode()
# # 对url base64编码的数据进行解码
base64.urlsafe_b64decode()
import base64
data = 'https://cn.bing.com/search?q=死后自会长眠&form=QBLH&sp=-1'.encode()
print(data)
# b'https://cn.bing.com/search?q=\xe6\xad\xbb\xe5\x90\x8e\xe8\x87\xaa\xe4\xbc\x9a\xe9\x95\xbf\xe7\x9c\xa0&form=QBLH&sp=-1'
en = base64.b64encode(data)
# b'aHR0cHM6Ly9jbi5iaW5nLmNvbS9zZWFyY2g/cT3mrbvlkI7oh6rkvJrplb/nnKAmZm9ybT1RQkxIJnNwPS0x'
print(en)
de = base64.b64decode(en)
# b'https://cn.bing.com/search?q=\xe6\xad\xbb\xe5\x90\x8e\xe8\x87\xaa\xe4\xbc\x9a\xe9\x95\xbf\xe7\x9c\xa0&form=QBLH&sp=-1'
print(de)
enu = base64.urlsafe_b64encode(data)
# b'aHR0cHM6Ly9jbi5iaW5nLmNvbS9zZWFyY2g_cT3mrbvlkI7oh6rkvJrplb_nnKAmZm9ybT1RQkxIJnNwPS0x'
print(enu)
deu = base64.urlsafe_b64decode(enu)
# b'https://cn.bing.com/search?q=\xe6\xad\xbb\xe5\x90\x8e\xe8\x87\xaa\xe4\xbc\x9a\xe9\x95\xbf\xe7\x9c\xa0&form=QBLH&sp=-1
print(deu)