base64模块
base64编码和解码
base64 可以把字符串编码成base64的编码格式:(大小写字母,数字和 =/)
eyJzdWIiOiAiMTIzNDU2Nzg5MCIsICJuYW1lIjogImxxeiIsICJhZG1pbiI6IHRydWV9
base64可以把base64编码的字符串,解码回原来的格式
应用场景:
jwt中使用
网络中传输字符串就可以使用base64编码
网络中传输图片,也可能使用base64的编码
为啥要使用base64
"""
1.可以转换成可打印的字符:
base64编码可以将任何数据转换成一组ascii字符的文本,使得二进制数据可以通过文本的方式安全的在网络上进行传输,因为早期系统只能处理ascii字符;
2.简化传输
有些系统可能不支持二进制数据进行直接传输,或者在传输过程中很可能会出现数据损坏的风险,使用base64编码转换成ascii码进行传输,可以有效减少这方面的风险
3.安全性,防篡改
"""
编码过程
import json
import base64
d = {'name': 'zxr', 'userid': 1, 'age': 18}
info = json.dumps(d)
# print(info) # {"name": "zxr", "userid": 1, "age": 18}
# 把字符串转成bytes格式的俩种方式
# 第一种:info.encode('utf-8')
# res = base64.b64encode(info.encode('utf-8'))
# print(res) # b'eyJuYW1lIjogInp4ciIsICJ1c2VyaWQiOiAxLCAiYWdlIjogMTh9'
# 第二种:强转
print(bytes(info, encoding='utf-8')) # b'{"name": "zxr", "userid": 1, "age": 18}'
解码过程
import json
import base64
d = {'name': 'zxr', 'userid': 1, 'age': 18}
info = json.dumps(d)
b'eyJuYW1lIjogInp4ciIsICJ1c2VyaWQiOiAxLCAiYWdlIjogMTh9'
res = base64.b64decode('eyJuYW1lIjogInp4ciIsICJ1c2VyaWQiOiAxLCAiYWdlIjogMTh9')
print(res) # b'{"name": "zxr", "userid": 1, "age": 18}'