base64编解码

base64是一种用64个字符进行组合来表示任意二进制数据的方法

原理:

base64会将3个字节作为一组,不够三个字节的会用\x00来补齐三个字节,并使用=来表示补了几个字节(一个=号表示补了一个字节,两个=表示补了两个字节),然后将这3个字节的数据编码成4个字节.所以使用base64编码后,数据的长度会增加33.33333%

base64编码的64个字符:

['A', 'B', 'C', ... 'a', 'b', 'c', ... '0', '1', ... '+', '/']

由上面的数组可以看出编码后可能会出现+和/所以不能使用b64encode应用于网址编码
应该使用urlsafe_b64encode. urlsafe_b64encode+变成了- ;将/ 变成了_

注意:base64和hashlib一样不接收unicode字符,只接受字节(字节数组)
代码示例:

import base64

str1 = "哈哈"
print(len(str1))
>>2
normal_bytes = str1.encode("utf-8")
print(normal_bytes)
>>b'\xe5\x93\x88\xe5\x93\x88'
print(len(normal_bytes))
>>6
base64_bytes = base64.b64encode(str1.encode("utf-8"))
print(base64_bytes)
>>b'5ZOI5ZOI'
print(len(base64_bytes))
>>8

由上面看出base64编码后的数据也是二进制数据

你可能感兴趣的:(base64编解码)