1、為什么要做Base64編碼呢
(1)在計算機中任何數據都是按ASCII碼存儲的,而ASCII碼的128~255之間的值是不可見字符。而在網絡上交換數據時,比如說從A地傳到B地,往往要經過多個路由設備,由于不同的設備對字符的處理方式有一些不同,這樣那些不可見字符就有可能被處理錯誤,這是不利于傳輸的。所以就先把數據先做一個Base64編碼,統統變成可見字符,這樣出錯的可能性就大降低了。
(2)Base64 不是加密算法,它主要的用途是把一些二進制數轉成普通字符用于網絡傳輸。由于一些二進制字符在傳輸協議中屬于控制字符,不能直接傳送,需要轉換一下?!続SCII碼的范圍是0-127,其中0-31和127這33個字符屬于控制字符。剩下32-126這95個字符屬于可打印字符,包含數字、大小寫字母、常用符號?!?/p>
2、Base64到底是怎樣編碼的呢?
簡單來說,任何一個數據無非可以看作一個比特流,如01000100010011101100111010111100011001010......那么取6個比特為一組,計算它的ASCII碼值,得到一個字符,這個字符肯定是可見字符,然后把它對應的字符寫出來,再取6個比特,計算...,如此下去,直到最后,就完成了編碼。
3、Base64的字符表
(1)標準base64只有64個字符(英文大小寫、數字和+、/)以及用作后綴等號;
(2)base64是把3個字節變成4個可打印字符,所以base64編碼后的字符串一定能被4整除(不算用作后綴的等號);
(3)等號一定用作后綴,且數目一定是0個、1個或2個。這是因為如果原文長度不能被3整除,base64要在后面添加\0湊齊3n位。為了正確還原,添加了幾個\0就加上幾個等號。顯然添加等號的數目只能是0、1或2;
(4)嚴格來說base64不能算是一種加密,只能說是編碼轉換。使用base64的初衷。是為了方便把含有不可見字符串的信息用可見字符串表示出來,以便復制粘貼;
參考文章:https://blog.csdn.net/ios_xumin/article/details/79609029