Base64編碼的作用:
由于某些系統(tǒng)中只能使用ASCII字符苏遥。Base64就是用來將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法。
Base編碼表
a-z A-Z 0-0 + / =(等號是用來末尾填充的)
image.png
具體實(shí)現(xiàn)
Base64要求把每三個8Bit的字節(jié)轉(zhuǎn)換為四個6Bit的字節(jié)(38 = 46 = 24)渣磷,然后把6Bit再添兩位高位0,組成四個8Bit的字節(jié)授瘦,也就是說醋界,轉(zhuǎn)換后的字符串理論上將要比原來的長1/3。
舉例:
轉(zhuǎn)換前 aaaaaabb ccccdddd eeffffff
轉(zhuǎn)換后 00aaaaaa 00bbcccc 00ddddee 00ffffff
其他說明
1.標(biāo)準(zhǔn)base64只有64個字符(英文大小寫提完、數(shù)字和+形纺、/)以及用作后綴等號;
2.base64是把3個字節(jié)變成4個可打印字符徒欣,所以base64編碼后的字符串一定能被4整除(不算用作后綴的等號)逐样;
3.等號一定用作后綴,且數(shù)目一定是0個帚称、1個或2個官研。這是因?yàn)槿绻拈L度不能被3整除,base64要在后面添加\0湊齊3n位闯睹。為了正確還原戏羽,添加了幾個\0就加上幾個等號。顯然添加等號的數(shù)目只能是0楼吃、1或2始花;
4.嚴(yán)格來說base64不能算是一種加密妄讯,只能說是編碼轉(zhuǎn)換。使用base64的初衷酷宵。是為了方便把含有不可見字符串的信息用可見字符串表示出來亥贸,以便復(fù)制粘貼;