base64編解碼
利用base64可以將二進(jìn)制數(shù)據(jù)編碼為64個字符組成的字符串,64個字符為a-z儿咱,A-Z庭砍,0-9,+混埠,/怠缸。base64編碼是將三個字節(jié)的二進(jìn)制數(shù)據(jù)編碼為四個字節(jié)的字符數(shù)據(jù),如果字節(jié)數(shù)不為3的倍數(shù)base64會將\x00
補(bǔ)在末尾钳宪,所以會常在base64字符串的末尾見到一個或者兩個的=
號揭北。
base64編碼
import base64
url = 'https://www.example.com/'
base64.b64encode(url.encode('utf-8')) # b'aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20v'
# b64encode()接收二進(jìn)制字符串,所以需要將字符串進(jìn)行編碼吏颖。其返回值也為二進(jìn)制字符串
# base64.b64encode(url.encode('utf-8')).decode() # 將二進(jìn)制base64字符串解碼
base64解碼
b64_str = 'aHR0cHM6Ly93d3cuZXhhbXBsZS5jb20v'
base64.b64decode(b64_str) # b'https://www.example.com/'
# b64decode()接收字符串搔体,其返回結(jié)果為解碼后的二進(jìn)制數(shù)據(jù)
# 也可對二進(jìn)制字符串進(jìn)行解碼
base64.decodebytes(b64_str.encode()) # b'https://www.example.com/'
小技巧:遇到base64編碼的二進(jìn)制文件可以直接解碼用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加密
哈希加密是對字符串進(jìn)行加密疚俱,其加密后的散列值不可逆,即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()