您好,登錄后才能下訂單哦!
base64.顧名思義,就是基于64個可打印字符來表示二進制數據的一種方法。(它不是加密算法)。對于64個打印字符,我們字需要6個二進制位就可以完全表示了。那么我們如何利用8個二進制位來表示只需要6個二進制位就可以完全表示的可打印字符呢?由于2的6次方等于64,所以我們可以將每6個位元為一個單元,對應某個可打印字符。三個字節有24個位元,對應于4個Base64單元,即3個字節需要用4個可打印字符來表示(一般的ASCII碼中一個字符有8位,但在這64個字符中只需要6位就可以表示出來了)。它可用來作為電子郵件的傳輸編碼。在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的應用
https://zh.wikipedia.org/zh/Base64
在base家族中,有base64,base32,base16還有傳說中的base8
在base64的編碼中http://xiaoqin00.blog.51cto.com/10468367/1713961,我們說到base64編碼是用64(2的6次方)個ASCII字符來表示256(2的8次方)個ASCII字符,也就是三位二進制數組經過編碼后變為四位的ASCII字符顯示,長度比原來增加1/3。
同樣,base32就是用32(2的5次方)個特定ASCII碼來表示256個ASCII碼。所以,5個ASCII字符經過base32編碼后會變為8個字符(公約數為40),長度增加3/5.
base16就是用16(2的4次方)個特定ASCII碼表示256個ASCII字符。1個ASCII字符經過base16編碼后會變為2個字符,長度增加一倍。
在base家族中,有先寫的是base64,沒有189的是base32,
base64中包含大寫字母(A-Z)、小寫字母(a-z)、數字0——9以及+/;
base32中只有大寫字母(A-Z)和數字234567
base32索引表:
base16中只有數字0-9以及大寫字母ABCDEF。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。