Base64編碼原理

2021-06-28 01:57:55 字數 1358 閱讀 1563



一、base64編碼原理

1、base64編碼原理簡單介紹

base64要求把每三個8bit的位元組轉換為四個6bit的位元組(3*8 = 4*6 = 24),然後把6bit再添兩位高位0,組成四個8bit的位元組,也就是說,轉換後的字串理論上將要比原來的長1/3。編碼原理如下所示:

(1)base64的編碼都是按字串長度,以每3個8bit的字元為一組,

(2)然後針對每組,首先獲取每個字元的ascii編碼,

(3)然後將ascii編碼轉換成8bit的二進位制,得到一組3*8=24bit的位元組

(4)然後再將這24bit劃分為4個6bit的位元組,並在每個6bit的位元組前面都填兩個高位0,得到4個8bit的位元組

(5)然後將這4個8bit的位元組轉換成10進製,對照base64編碼表,得到對應編碼後的字元。

2、base64編碼表

base64編碼使用64個明文來編碼任意的二進位制檔案,它裡面只使用了a-z,a-z,0-9,+,/這64個字元。編碼裡面還有「=」號,不過等號不屬於編碼字元,而是填充字元。base64編碼表如下所示:

3、乙個簡單的例項

以字串「ow!」為例:

(1)字串「ow!」被分拆成3個8位的位元組(0x4f、0x77、0x21);

(2)這3個位元組構成乙個24位的二進位制值:01001111 01110111 00100001;

(3)這些位被劃分為4個6位的序列:010011、110111、011100、100001;

(4)每個6bit的位元組前面都填兩個高位0,得到4個8bit的位元組:00010011、00110111、00011100、00100001;

(5)這4個8bit的位元組對應的10進製的數值分別為:19、55、28、33,對照base64編碼表,得到對應編碼後的字元:t、3、c、h。到此編碼結束。

4、base64編碼填充機制

base64編碼收到乙個8位位元組序列,將這個二進位制序列劃分成6位的快。二進位制序列有時不能正好平分成6位的塊,在這種情況下,就在序列末尾填充零位,使二進位制的序列成為24的倍數(6和8的最小公倍數)。

對已填充的二進位制串進行編碼時,任何完全填充(不包含原始資料中位)的6位組都由特殊的第65個字元「=」表示。如果6位組是部分填充的,就將填充位設定為0。乙個例項如下表所示:

「a:a」和「a:aaaa」分別為3個位元組和6個位元組,是3的倍數,因此無需填充。「a:aa」和「a:aaa」分別為4個位元組和5個位元組,不是3的倍數,因此需要填充。

BASE64 編碼原理

unit ubase64 編碼原理 將3個位元組轉換成4個位元組 3 x 8 24 4x6 先讀入3個位元組,每讀乙個位元組,左移8位,再右移四次,每次6位,這樣就有4個 位元組了。解碼原理 將4個位元組轉換成3個位元組,先讀入4個6位 用或運算 每次左 移6位,再右移3次,每次8位,這樣就還原了。...

Base64編碼原理

所謂base64,就是說選出64個字元 小寫字母a z 大寫字母a z 數字0 9 符號 再加上作為墊字的 實際上是65個字元 作為乙個基本字符集。然後,其他所有符號都轉換成這個字符集中的字元。具體來說,轉換方式可以分為四步。第一步,將每三個位元組作為一組,一共是24個二進位制位。第二步,將這24個...

base64 編碼原理

一.base64編碼由來 為什麼會有base64編碼呢?因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就 不能通過郵件傳送。這樣用途就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協...