python中base64編碼與解碼

2021-08-28 03:11:56 字數 1524 閱讀 8463

base64是一種用64個字元來表示任意二進位制資料的方法。

用記事本開啟exejpgpdf這些檔案時,我們都會看到一大堆亂碼,因為二進位制檔案包含很多無法顯示和列印的字元,所以,如果要讓記事本這樣的文字處理軟體能處理二進位制資料,就需要乙個二進位製到字串的轉換方法。base64是一種最常見的二進位制編碼方法。

base64的原理很簡單,首先,準備乙個包含64個字元的陣列:

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

然後,對二進位制資料進行處理,每3個位元組一組,一共是3x8=24bit,劃為4組,每組正好6個bit:

這樣我們得到4個數字作為索引,然後查表,獲得相應的4個字元,就是編碼後的字串。

所以,base64編碼會把3位元組的二進位制資料編碼為4位元組的文字資料,長度增加33%,好處是編碼後的文字資料可以在郵件正文、網頁等直接顯示。

如果要編碼的二進位制資料不是3的倍數,最後會剩下1個或2個位元組怎麼辦?base64用\x00位元組在末尾補足後,再在編碼的末尾加上1個或2個=號,表示補了多少位元組,解碼的時候,會自動去掉。

python內建的base64可以直接進行base64的編譯碼:

import base64

encodestr = base64.b64encode('abcr34r344r'.encode('utf-8'))

print(encodestr)

結果:b'ywjjcjm0cjm0nhi='

b 表示 byte的意思,我們只要再將byte轉換回去就好了

print(str(encodestr,'utf-8'))

print(encodestr.decode())

標準的base64編碼後可能出現字元+和/,在url中就不能直接作為引數,所以又有一種"url safe"的base64編碼,其實就是把字元+和/分別變成-和_:

base64.urlsafe_b64encode()

base64.urlsafe_b64decode()

print(base64.b64encode('abcd--__'.encode('utf-8')))

print(base64.urlsafe_b64decode('abcd--__'.encode('utf-8')))

解碼過程:

result = base64.b64decode(encodestr)

print(result)

result = base64.urlsafe_b64decode(encodestr)

print(result)

base64編碼 動畫演示 Base 64 編碼

base64 是一種十分流行的編碼方式,僅僅使用 64 個字元加等號 就可以以文字的形式表示所有的二進位制資料了,因為它能夠把二進位制格式通過編碼轉換成可見字元,所有我們就可以通過的把二進位制格式比如,檔案等通過 base64 編碼然後通過文字的形式共享出去,是不是很神奇呀。把輸入的資料轉換成 二進...

Python 模擬 Base64編碼

def enbs64 s 編碼後的結果 result 二進位制資料 bin data base64編碼對照表 bs64 table a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e f g h i j k l m n o p ...

python中base64編碼與解碼

引言 在一些專案中,介面的報文是通過base64加密傳輸的,所以在進行介面自動化時,需要對所傳的引數進行base64編碼,對拿到的響應報文進行解碼 base64編碼是一種 防君子不防小人 的編碼方式。廣泛應用於mime協議,作為電子郵件的傳輸編碼,生成的編碼可逆,後一兩位可能有 生成的編碼都是asc...