Base64編碼原理
Base64是網(wǎng)絡(luò)上最常見的用于傳輸8Bit字節(jié)碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進制數(shù)據(jù)的方法。
Base64編碼是從二進制到字符的過程,可用于在HTTP環(huán)境下傳遞較長的標識信息。采用Base64編碼具有不可讀性,需要解碼后才能閱讀。
Base64要求把每三個8Bit的字節(jié)轉(zhuǎn)換為四個6Bit的字節(jié)(38 = 46 = 24),然后把6Bit再添兩位高位0,組成四個8Bit的字節(jié),也就是說,轉(zhuǎn)換后的字符串理論上將要比原來的長1/3。
規(guī)則
把3個字節(jié)變成4個字節(jié)。
每76個字符加一個換行符。
最后的結(jié)束符也要處理。
例子1
轉(zhuǎn)換前 11111111, 11111111, 11111111 (二進制)
轉(zhuǎn)換后 00111111, 00111111, 00111111, 00111111 (二進制)
上面的三個字節(jié)是原文,下面的四個字節(jié)是轉(zhuǎn)換后的Base64編碼,其前兩位均為0。
轉(zhuǎn)換后,我們用一個碼表來得到我們想要的字符串(也就是最終的Base64編碼),這個表是這樣的:
例子2
轉(zhuǎn)換前 10101101,10111010,01110110
轉(zhuǎn)換后 00101011, 00011011 ,00101001 ,00110110
十進制 43 27 41 54
對應(yīng)碼表中的值 r b p 2
所以上面的24位編碼,編碼后的Base64值為 rbp2
解碼同理,把 rbq2 的二進制位連接上再重組得到三個8位值,得出原碼。
(解碼只是編碼的逆過程,有關(guān)MIME的RFC還有很多,如果需要詳細情況請自行查找。)
浙公網(wǎng)安備 33010602011771號