Python模組介紹之base64模組、Queue模組
1、base64模組
base64是一種編碼方式,它使用的碼字對應表中一共有64個碼元,分別是A~Z、a~z、0~9、+ 和 / ,一些base64的變種大多數是在最後的兩個字元/和+上做功夫,將其替換成其他的字元,用來避免某些碰撞(與特定場合的某些規則)。
編碼規則:在二進位制層次上,就是先將3個8bite的二進位制數分割成4個6bite的二進位制數,然後在每個6bite二進位制數的高位新增2個二進位制位,使之成為8bite的二進位制數,然後轉換成相應的字元(由於高2位都是0,因此一共可以表示’2的6次方‘個字元,對應表的64個碼元)。如:
轉換前 10101101,10111010,01110110
轉換後 00101011, 00011011 ,00101001 ,00110110
十進位制 43 27 41 54(然後可以對應著表去尋找對應的字元,便完成了base64編碼。)
那麼,看來,原文必須是3的整數倍,轉換完後必須是4的倍數嘮,回答是的。若不是怎麼辦?新增其他符號到轉換完的字元後面,使之成為4的倍數,規定末尾新增=。如下:(原字串長度除以3後餘數為1和2的兩種情況)
餘數為1:
轉換前剩餘字元:w(01110111)
轉換後:00011101(29) 00110000(48)
對應表格換成字元(表格可以網上搜一下):dw==(新增2個‘=’)
餘數為2:
轉換前剩餘字元:w(01110111)w(01110111)
轉換後:00011101(29) 00110111(55) 00011100(28)
字元:d3c= (新增1個’=‘)
轉換前後,字元的數量關係,想必大家自己會想清楚的,對吧! "3 -> 4"
摘錄:
先以“迅雷下載”為例: 很多下載類網站都提供“迅雷下載”的連結,其地址通常是加密的迅雷專用下載地址。
其實迅雷的“專用地址”也是用Base64加密的,其加密過程如下: 一、在地址的前後分別新增AA和ZZ 二、對新的字串進行Base64編碼 另: Flashget的與迅雷類似,只不過在第一步時加的“料”不同罷了,Flashget在地址前後加的“料”是[FLASHGET] 而QQ旋風的乾脆不加料,直接就對地址進行Base64編碼了 然後,回到我們的Python中來,Python的base64模組,給我們提供了8個方法如下: