base64編碼原理分析
base64編碼
base64是網路上最常見的用於傳輸8bit位元組**的編碼方式之一。
base64編碼的作用
因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議的情況下,開闢一種新的方案來支援二進位制檔案的傳送。把不可見字元用可見字元來表示。而base64就是一種基於64個可見字元來表示二進位制資料的表示方法。
base64編碼的原理
base64可以將ascii字串或者是二進位制編碼成只包含a—z,a—z,0—9,+,/ 這64個字元( 26個大寫字母,26個小寫字母,10個數字,1個+,乙個 / 剛好64個字元)。這64個字元用6個bit位就可以全部表示出來,乙個位元組有8個bit 位,那麼還剩下兩個bit位,這兩個bit位用0來補充。其實,乙個base64字元仍然是8個bit位,但是有效部分只有右邊的6個 bit,左邊兩個永遠是0。
base64的編碼規則是將3個8位位元組(3×8=24位)編碼成4個6位的位元組(4×6=24位),之後在每個6位位元組前面,補充兩個0,形成4個8位位元組的形式,那麼取值範圍就變成了0~63。又因為2的6次方等於64,所以每6個位組成乙個單元。
下圖是base64編碼對照表,數值代表字元的索引,這個是標準base64協議規定的,不能更改。
現在如果編碼我的名字(李高佳首字母)lgj
對應ascii碼 76 71 74
轉化為二進位制 01001100 01000111 01001010
合併 010011000100011101001010
六位 010011 000100 011101 001010
補零 00010011 00000100 00011101 00001010
十進位制 19 4 29 10
base對照 tedk
根據雲課堂上的翻譯程式檢驗正確。
基於python的轉化
關於base64編碼
今天和同事聊到在給前端傳輸 驗證碼的時候,涉及到了這個關於base64編碼的問題。可以通過編碼的格式來獲取 至於好處可以參考以下 string a 123412312sfwefwefwefw string b new string codecmanager.getcodecclient codecc...
關於Base64編碼 解碼
用數字證書簽名或者生成md5摘要結果都是byte陣列,為了方便對簽名結果放在xml中進行傳輸,一般先用base64進行編碼,生成一串可見的ascii字元。接收方收到後在用base64進行decoder生成byte陣列。可進行base64編碼 解碼處理的類有 org.apache.commons.co...
C 處理base64 以及base64的原理分析
base64的原理,base64的碼表只有64個字元,如果要表達64個字元的話,使用6的bit即可完全表示 2的6次方為64 因為base64的編碼只有6個bit即可表示,而正常的字元是使用8個bit表示,8和6的最小公倍數是24,所以4個base64字元可以表示3個標準的ascll字元 publi...