Android数据编码之Base64
什么是Base64
Base64是網絡上最常見的用于傳輸8Bit字節碼的編碼方式之一,Base64就是一種基于64個可打印字符來表示二進制數據的方法。
Base64編碼是從二進制到字符的過程,可用于在HTTP環境下傳遞較長的標識信息。采用Base64編碼具有不可讀性,需要解碼后才能閱讀。
Base64由于以上優點被廣泛應用于計算機的各個領域,然而由于輸出內容中包括兩個以上“符號類”字符(+, /, =),不同的應用場景又分別研制了Base64的各種“變種”。為統一和規范化Base64的輸出,Base62x被視為無符號化的改進版本。
很多人把他叫做Base64加密,其實Base64不是一種加密方式,并不能起到加密的效果,它只是一種編碼方式。Base64是基于以下64個可見字符實現的,所以叫Base64。
Base64編碼的作用
Base64編碼在實際開發中有相當廣泛的用途
在計算機中任何數據都是按ascii碼存儲的,而ascii碼的128~255之間的值是不可見字符。而在網絡上交換數據時,比如說從A地傳到B地,往往要經過多個路由設備,由于不同的設備對字符的處理方式有一些不同,這樣那些不可見字符就有可能被處理錯誤,這是不利于傳輸的。所以就先把數據先做一個Base64編碼,統統變成可見字符,這樣出錯的可能性就大降低了。
對證書來說,特別是根證書,一般都是作Base64編碼的,因為它要在網上被許多人下載。電子郵件的附件一般也作Base64編碼的,因為一個附件數據往往是有不可見字符的。
Base64編碼在Android中的使用
Adroid中通過Base64類直接實現Base64的編碼和解碼
String strEncode = Base64.encodeToString("Hello WuXiaAChao!".getBytes(), Base64.DEFAULT); String strDecode = new String(Base64.decode(strEncode, Base64.DEFAULT)); Base64--編碼后數據: SGVsbG8gV3VYaWFBQ2hhbyE= Base64--解碼后數據: Hello WuXiaAChao!Adroid中Base64.DEFAULT參數說明
- DEFAULT 這個參數是默認,使用默認的方法來加密
- NO_PADDING 這個參數是略去加密字符串最后的”=”
- NO_WRAP 這個參數意思是略去所有的換行符(設置后CRLF就沒用了)
- CRLF 這個參數是Win風格的回車換行符,意思就是使用CR(回車)LF(換行)這一對作為一行的結尾,而不是Linux/Unix風格的LF(換行)
- URL_SAFE 這個參數意思是加密時不使用對URL和文件名有特殊意義的字符來作為加密字符,具體就是以-和_取代+和/
Base64編碼的實現
Base64是3個字節一組,最后變成4個可見字符。具體實現是:
如果目標字符不是3的倍數,多出一個字節的分成6 bit和2 bit兩組,2 bit低位補4個0變成6 bit,兩組再高位補兩個0,最后轉成2個Base64字符。因為Base64字符是4個,最后補兩個等號,如"a"的Base64編碼是"YQ=="。多出兩個字符的也是類似處理,不足一組的低位補足6位,再高位補兩個0轉成Base64編碼,最后不足4個的補等號,如"ab"的Base64編碼是"YWI="。
總結
以上是生活随笔為你收集整理的Android数据编码之Base64的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: retrofit2.adapter.rx
- 下一篇: excel模板批量导入数据