基礎知識 - 爲什麼要使用 Base64 編碼,有哪些情景需求?

公鑰證書也好,電子郵件數據也好,經常要用到Base64編碼,那麼爲什麼要作一下這樣的編碼呢?

我們知道在計算機中任何數據都是按ascii碼存儲的,而ascii碼的128~255之間的值是不可見字符。

而在網絡上交換數據時,比如說從A地傳到B地,往往要經過多個路由設備,由於不同的設備對字符的處理方式有一些不同,這樣那些不可見字符就有可能被處理錯誤,這是不利於傳輸的。

所以就先把數據先做一個Base64編碼,統統變成可見字符,這樣出錯的可能性就大降低了。

 

使用場景

對證書來說,特別是根證書,一般都是作Base64編碼的,因爲它要在網上被許多人下載。

電子郵件的附件一般也作Base64編碼的,因爲一個附件數據往往是有不可見字符的。

比如 http 協議當中的key value字段的值,必須進行URLEncode,因爲一些特殊符號(等號或者空格)是有特殊含義的,造成混淆,解析失敗,那麼需要把這些值統一處理爲可見字符,傳輸完再解析回來。

XML格式的文件中如果想嵌入另一個xml文件。直接嵌入,那麼各種標籤(有兩套XML標籤)就混亂了,不容易被解析。怎麼辦?

1、把另一個xml編譯成字節數組轉換成逗號隔開的字符串。
2、編譯成可見字符。

結果:2好些。因爲1消耗的空間比原來多一倍,而2只是多三分之一。

網頁中一些小圖片可以直接以base64編碼的方式嵌入。不用再用鏈接請求消耗資源。

很多比較老的協議還是隻支持純文本的,比如SMTP協議。有時在一些特殊應用的場合,大多數消息是純文本的,偶爾需要用這條純文本通道傳一張圖片之類的情況發生的時候,就會用到base64。

HTTP雖然也是純文本協議,但是http有針對二進制數據做特殊的規定(mime),所以用http直接傳輸二進制數據是可行的。但是有些特殊情況,比如返回需要在JSON內部之類的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章