Base64要求把每三個8bit的位元組轉換為四個6bit的位元組(即3*8 = 4*6 = 24) 1.例如我們有一個中文字元“中國(gb2312)”,轉為十進位為:中-->54992,國-->47610 2.將 中和國 的十進位轉為對應的二進位位:1101011011010000 和 1011 ...
Base64要求把每三個8bit的位元組轉換為四個6bit的位元組(即3*8 = 4*6 = 24)
1.例如我們有一個中文字元“中國(gb2312)”,轉為十進位為:中-->54992,國-->47610
2.將 中和國 的十進位轉為對應的二進位位:1101011011010000 和 1011100111111010
3.逢6位劃分後:110101 101101 000010 111001 111110 10
此時按照Base64編碼的規則,要滿足3*8位拆分位4*6位。“中國”轉為二進位後一共32位,需要“拼夠”48位,所以不夠的位需要在後面補0,最終逢六位劃分後為:
110101 101101 000010 111001 111110 100000 000000 000000
根據(48-32)/48=1/3得出,通過Base64編碼後,位數要比原來多1/3。
4. 根據Base64編碼表,找出對應的值
110101 101101 000010 111001 111110 100000 000000 000000
53 45 2 57 62 32 = =
根據Base64編碼表轉換後結果為:
1 t C 5 + g = =
如果最終按六位劃分後全是000000,則對應的編碼為=(PS:之前一直不明白一些公鑰的最後幾位都是=)
5. 根據Java代碼將Base64解碼出來
public static void main(String[] args) throws IOException { BASE64Decoder base64Decoder =new BASE64Decoder(); System.out.println(new String(base64Decoder.decodeBuffer("1tC5+g=="),"gb2312")); }
輸出結果為:中國
6.附Base64編碼表: