1. 程式人生 > >Python3 學習加解密 系列 1 --Base

Python3 學習加解密 系列 1 --Base

  1. Base 家族
    結合原始碼的學習
import base64

加密
b64,b32,b16,b85 用法一致
encrypt_data = base64.b64encode(data.encode())    
print(encrypt_data)

#預設傳入一個引數,第二個引數altchars 位元組型的兩個任意字母,替換+/ 為了某些特定需要要
其實: base64.b64encode(bytes,b'-_')  ==  urlsafe_b64encode(bytes) 

同一樣的   base64.b64encode(bytes,b'+/')  需要還原, 還存在第三個引數 幾乎不用管,
大概意思:傳進來一個數, 有這樣一個正則 re.match(b'^[A-Za-z0-9+/]*={0,2}$', s) 判斷是否像base64
不像就 報有一個 Non-base64 digit found  的 error 


解密
decode(input,output)  用來解決檔案中的base64的,  傳入兩個 二進位制檔案的控制代碼:
一般用法 :
with open('file1','rb') as f:
    with open('file2','wb') as g :
   	    base64.decode(f,g)
結果是把 file1  中的 base64加密內容 解密到 file2 
encode() 則是把 file1 中的 內容  base64加密 到 file2
 
 遇到有特殊符號的base64:
 用urlsafe_b64encode:
 _urlsafe_encode_translation = bytes.maketrans(b'+/', b'-_')
_urlsafe_decode_translation = bytes.maketrans(b'-_', b'+/')
制定了兩個規則,加密時 把 +和/ 替換成 -_ 再base64, 解密時先還原