base64.顧名思義,就是基于64個可打印字符來表示二進制數據的一種方法。(它不是加密算法)。對于64個打印字符,我們字需要6個二進制位就可以完全表示了。那么我們如何利用8個二進制位來表示只需要6個二進制位就可以完全表示的可打印字符呢?由于2的6次方等于64,所以我們可以將每6個位元為一個單元,對應某個可打印字符。三個字節有24個位元,對應于4個Base64單元,即3個字節需要用4個可打印字符來表示。它可用來作為電子郵件的傳輸編碼。在Base64中的可打印字符包括字母A-Z、a-z、數字0-9,這樣共有62個字符,此外還有兩個可打印符號在不同的系統中而不同。
Base64索引表:(原始表)
編碼過程實例:
編碼
上面的三個字節是原文,下面的四個字節是轉換后的Base64編碼,其前兩位均為0。
轉換后,我們再通過將二進制轉換為可打印字符來得到我們想要的字符串(也就是最終的Base64編碼)
我們可以看到經過base64編碼后,字符串理論上比之前長1/3,也就是原來的4/3。(除下面兩種情況外)。
如果要編碼的字節數不能被3整除,最后會多出1個或2個字節,那么可以使用下面的方法進行處理:先使用0字節值在末尾補足,使其能夠被3整除,然后再進行base64的編碼。在編碼后的base64文本后加上一個或兩個'='號,代表補足的字節數。也就是說,當最后剩余一個八位字節(一個byte)時,最后一個6位的base64字節塊有四位是0值,最后附加上兩個等號;如果最后剩余兩個八位字節(2個byte)時,最后一個6位的base字節塊有兩位是0值,最后附加一個等號。
base64編碼后一般都有=號,而且密文長度較長的也基本是base64編碼。(base64編碼的長度不固定)(等號是根據使用情況不同而對64種可打印字符進行修改的結果)。
base64的應用
base64在線解碼:http://www1.tc711.com/tool/BASE64.htm
https://zh.wikipedia.org/zh/Base64
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。