定義
Base64:以64個字符(a-z,A-Z,0-9,+,/)作為基礎集合的編碼方式。
原理
- 將每三個字節作為一組,一共是3*8=24個二進制位
- 將這24個二進制位分為四組,每個組有6個二進制位
- 在每個小組前面加兩個00,擴展成32個二進制位,即四個字節
- 根據base64基礎表,得到擴展后的每個字節的對應的base64符號,加密完成
編碼的具體實現
Base64編碼要求把3個8位字節(3*8=24)轉化為4個6位的字節(4*6=24),之后在6位的前面補兩個0,形成8位一個字節的形式。由于2的6次方為64,所以每6個位為一個單元,對應某個可打印字符。當原數據不是3的整數倍時,如果最后剩下兩個輸入數據,在編碼結果后加1個“=;如果最后剩下一個輸入數據,編碼結果后加2個“=;如果沒有剩下任何數據,就什么都不要加,這樣才可以保證資料還原的正確性
作用
Base64內容傳送編碼被設計用來把任意序列的8位字節描述為一種不易被人直接識別的形式
附文
Base基礎表
/**
* Lookup table for turning Base64 alphabet positions (6 bits)
* into output bytes.
*/
private static final byte ENCODE[] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f',
'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v',
'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/',
};
轉碼對照表
轉碼對照表