base64编解码
利用base64可以将二进制数据编码为64个字符组成的字符串,64个字符为a-z,A-Z,0-9,+,/。base64编码是将三个字节的二进制数据编码为四个字节的字符数据,如果字节数不为3的倍数base64会将\x00
补在末尾,所以会常在base64字符串的末尾见到一个或者两个的=
号。
base64编码
import base64
url = 'https://www.example.com/'
base64.b64encode(url.encode('utf-8')) # b'aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20v'
# b64encode()接收二进制字符串,所以需要将字符串进行编码。其返回值也为二进制字符串
# base64.b64encode(url.encode('utf-8')).decode() # 将二进制base64字符串解码
base64解码
b64_str = 'aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20v'
base64.b64decode(b64_str) # b'https://www.example.com/'
# b64decode()接收字符串,其返回结果为解码后的二进制数据
# 也可对二进制字符串进行解码
base64.decodebytes(b64_str.encode()) # b'https://www.example.com/'
小技巧:遇到base64编码的二进制文件可以直接解码用io字节流接收再用其他模块加载,无需在本地保存文件再使用其他模块加载。
from io import BytesIO
from PIL import Image
img_buffer = BytesIO(base64.b64decode(b64_str)) # base64解码后直接用字节流接收
im = Image.open(img_buffer)
img_buffer.close() # 关闭字节流
hash加密
哈希加密是对字符串进行加密,其加密后的散列值不可逆,即hash加密是单向加密不可解。python内置的hashlib库提供了md5, SHA1, SHA224, SHA256, SHA384, SHA512 加密算法的支持
import hashlib
md5 = hashlib.md5() # 创建md5对象
md5.update('example'.encode()) # 载入字符串
md5.hexdigest() # 获取加密后的散列值
# 1a79a4d60de6718e8e5b326e338ae533
# 简便方法
hashlib.md5('example'.encode()).hexdigest()