python3.0 base64 解密以及base64原理

python3.0 base64 解密以及base64原理

python3.0

加密

>>> import base64

>>> s = '明文A'

>>> a = base64.b64encode(a)

>>> print (a)

輸出加密后的密文

解密

>>>s=base64.b64decode(a)

>>>print (s)

輸出解密后的密文

base32? 16? 加密解密改為based64.b 32/16 en/de code(a)


base64

定義:8bit字節代碼的編碼方式之一

用處:在HTTP環境下傳遞較長的標識信息? 具有不可讀性

介紹:Base64要求把每三個8Bit的字節轉換為四個6Bit的字節(3*8 = 4*6 = 24),然后把6Bit再添兩位高位0,組成四個8Bit的字節,也就是說,轉換后的字符串理論上將要比原來的長1/3

原理:

轉換過程:3*8=4*6? 內存一個字節占8位

轉換前:? ? s? ? ? 1? ? ? 3

ASICC? 115? 49? ? 51

二進制:? ? 01110011? ? ? ? 00110001? ? ? ? 00110011

6個一組(4組):? ? ? 011100? ? ? 110011? ? ? 000100? ? ? 110011

計算機是8位8位的儲存? 6不夠就自動補兩個高位0

變為? ? ? 00011100? ? ? 00110011? ? ? 00000100? ? ? 00110011

得到? ? ? 28? ? ? ? ? 51? ? ? 4? ? ? 51

查對表? c ? ? ? ? ? z? ? ? E? ? ? z

先以“迅雷下載”為例: 很多下載類網站都提供“迅雷下載”的鏈接,其地址通常是加密的迅雷專用下載地址。

其實迅雷的“專用地址”也是用Base64"加密"的,其過程如下:

一、在地址的前后分別添加AA和ZZ

二、對新的字符串進行Base64編碼

另: Flashget的與迅雷類似,只不過在第一步時加的“料”不同罷了,Flashget在地址前后加的“料”是[FLASHGET]

而QQ旋風的干脆不加料,直接就對地址進行Base64編碼了


規則:

①把3個字符變成4個字符..

②每76個字符加一個換行符..

③最后的結束符也要處理..

例子

1.

轉換前(原文):? ? ? ? ? ? aaaaaabb? ? ? ? ? ccccdddd? ? ? ? eeffffff

? ? ? ? ? ? ? ? ? ? ? ? ? ? aaaaaa? ? ? ? ? bbcccc? ? ? ? ddddee? ? ? ? ? ffffff

轉換后(Base64):? ? ? ? ? 00aaaaaa? ? ? ? 00bbcccc? ? ? ? 00ddddee? ? ? 00ffffff

2.二進制

轉換前(原文):? ? ? ? ? ? 11111111? ? ? ? 11111111? ? ? ? 11111111

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?111111? ? ? 111111? ? ? 111111? ? ? 111111

轉換后(Base64)? ? ? 00111111? ? ? ? 00111111? ? ? ? 00111111? ? ? ? 00111111

3.二進制

十進制? ? ? ? ? ? ? ? ? ? 173? ? ? ? 186? ? ? ? ? ? 118

轉換前(原文)? ? ? ? ? 10101101? ? ? ? 10111010? ? ? ? 01110110

? ? ? ? ? ? ? ? ? ? ? ?101011? ? ? 011011? ? ? 101001? ? ? 110110

轉換后(Base64)? ? 00101011? ? ? 00011011? ? ? ? 00101001? ? ? ? 00110110

十進制 ? ? ? ? ? ? ? ? ? ? ?43? ? ? 27? ? ? 41? ? ? 54


對應碼表中的值? ? r? ? ? b? ? ? p? ? ? 2

base64加密后為rbp2

解碼同理,把 rbq2 的二進制位連接上再重組得到三個8位值,得出原碼。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容