base64 加密方式詳解
base64編碼表
命名
base64是用于傳輸8Bit字節(jié)代碼,由上圖的編碼表可以知道雌贱,編碼后的內(nèi)容只包含這64個字符類型催首,所以稱為base64編碼(不足四個字符的時候會用 ‘=’ 來補足杀餐,下面會說明)。
編碼過程
1.首先將待編碼的內(nèi)容轉換成8位二進制绞愚,每3個字符為一組叙甸;
2.如果編碼前的長度是3n+1,編碼后的內(nèi)容最后面補上2個 ‘=’爽醋,如果編碼前的長度是3n+2蚁署,編碼后 ? ?的內(nèi)容最后面補上1個 ‘=’。
3.再將每一組的二進制內(nèi)容拆分成6位的二進制蚂四,不足6位的后面補足0光戈;
4.每個6進制的數(shù)字前面補足0,保證變成8位二進制遂赠;
5.將補足后的內(nèi)容根據(jù)base64編碼表轉換成base64內(nèi)容輸出久妆;
舉例說明
編碼前? “hb”
1.根據(jù)ascii碼轉換成8位二進制,3個為一組:
? ?01101000,01100010
2.編碼前長度是3n+2跷睦,所以后面補1個 ‘=’:
? ?01101000,01100010,=
3.拆分成6位二進制筷弦,不足6位的在后面補足0,0010補足變成001000:
? ?011010,000110,001000,=
4.每個6進制的數(shù)字前面補足0:
? ?0011010,00000110,00000010,=
5.根據(jù)base64編碼表輸出:
? ?aGI=
由此可以看出抑诸,本來是3個8位二進制的長度烂琴,編碼后變成4個8位二進制長度,所以base64的編碼方式編碼后的長度大約比編碼前大了1/3蜕乡。
Java JDK在1.8版本里加入了base64的代碼奸绷,有興趣可以閱讀 Java.util.Base64
Tools