base64編解碼
利用base64可以將二進制數(shù)據(jù)編碼為64個字符組成的字符串,64個字符為a-z,A-Z,0-9,+,/。base64編碼是將三個字節(jié)的二進制數(shù)據(jù)編碼為四個字節(jié)的字符數(shù)據(jù),如果字節(jié)數(shù)不為3的倍數(shù)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()接收字符串,其返回結(jié)果為解碼后的二進制數(shù)據(jù)
# 也可對二進制字符串進行解碼
base64.decodebytes(b64_str.encode()) # b'https://www.example.com/'
小技巧:遇到base64編碼的二進制文件可以直接解碼用io字節(jié)流接收再用其他模塊加載,無需在本地保存文件再使用其他模塊加載。
from io import BytesIO
from PIL import Image
img_buffer = BytesIO(base64.b64decode(b64_str)) # base64解碼后直接用字節(jié)流接收
im = Image.open(img_buffer)
img_buffer.close() # 關(guān)閉字節(jié)流
hash加密
哈希加密是對字符串進行加密,其加密后的散列值不可逆,即hash加密是單向加密不可解。python內(nèi)置的hashlib庫提供了md5, SHA1, SHA224, SHA256, SHA384, SHA512 加密算法的支持
import hashlib
md5 = hashlib.md5() # 創(chuàng)建md5對象
md5.update('example'.encode()) # 載入字符串
md5.hexdigest() # 獲取加密后的散列值
# 1a79a4d60de6718e8e5b326e338ae533
# 簡便方法
hashlib.md5('example'.encode()).hexdigest()