**自:
【base64】
-base64的編碼都是按字串長度,以每3個8bit的字元為一組,
-然後針對每組,首先獲取每個字元的ascii編碼,
-然後將ascii編碼轉換成8bit的二進位制,得到一組3*8=24bit的位元組
-然後再將這24bit劃分為4個6bit的位元組,並在每個6bit的位元組前面都填兩個高位0,得到4個8bit的位元組
-然後將這4個8bit的位元組轉換成10進製,對照base64編碼表 (下表),得到對應編碼後的字元。
(注:1. 要求被編碼字元是8bit的,所以須在ascii編碼範圍內,\u0000-\u00ff,中文就不行。
2. 如果被編碼字元長度不是3的倍數的時候,則都用0代替,對應的輸出字元為=)
base64 編碼表
value
char
value
char
value
char
value
char0a
16q32g
48w1b
17r33h
49x2c
18s34i
50y3d
19t35j
51z4e
20u36k
5205f
21v37l
5316g
22w38m
5427h
23x39n
5538i
24y40o
5649j
25z41p
57510k
26a42q
58611l
27b43r
59712m
28c44s
60813n
29d45t
61914o
30e46u
62+15p
31f47v
63/比如舉下面2個例子:
a) 字元長度為能被3整除時:比如「tom」 :
t o m所以,btoa('tom') = vg9tascii: 84 111 109
8bit位元組: 01010100 01101111 01101101
6bit位元組: 010101 000110 111101 101101
十進位制: 21 6 61 45
對應編碼: v g 9 t
b) 字串長度不能被3整除時,比如「lucy」:
l u c y由於lucy只有4個字母,所以按3個一組的話,第二組還有兩個空位,所以需要用0來補齊。這裡就需要注意,因為是需要補齊而出現的0,所以轉化成十進位制的時候就不能按常規用base64編碼表來對應,所以不是a, 可以理解成為一種特殊的「異常」,編碼應該對應「=」。ascii: 76 117 99 121
8bit位元組: 01001100 01110101 01100011 01111001 00000000 00000000
6bit位元組: 010011 000111 010101 100011 011110 010000 000000 000000
十進位制: 19 7 21 35 30 16 (異常) (異常)
對應編碼: t h v j e q = =
有了上面的理論,那我們實現乙個base64編碼就容易了。
關於Base64編碼 解碼
用數字證書簽名或者生成md5摘要結果都是byte陣列,為了方便對簽名結果放在xml中進行傳輸,一般先用base64進行編碼,生成一串可見的ascii字元。接收方收到後在用base64進行decoder生成byte陣列。可進行base64編碼 解碼處理的類有 org.apache.commons.co...
base64編碼 解碼
ps base64是一種資料編碼方式,目的是讓資料符合傳輸協議的要求,有些人誤用它進行資料加密 base64編碼 nsstring base64encodedstringwithstring nsstring string base64解碼 nsstring base64decodedstringw...
Base64編碼解碼
一.base64編碼由來 為什麼會有base64編碼呢?因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議...