1. 程式人生 > >Base64 編碼換行和+號遍空格的處理

Base64 編碼換行和+號遍空格的處理

Android自身帶有Base64加密與解密的包,可以方便地加密密碼方便傳輸。

 String base64Token = Base64.encodeToString(token.trim().getBytes(), Base64.NO_WRAP);

 byte[] mmmm = Base64.decode(base64Token,Base64.DEFAULT);

在用Base64加密做籤權的時候用Base64.DEFAULT一直不能籤權成功。最後用Base64.NO_WRAP成功了。

看起來用法與Java所帶的sun.misc的Base64Encoder這些用法差不多,但應該留意到了,在encode的時候,會有一個引數Flags(即上面程式碼中的Base64.DEFAULT)

這個引數有什麼用呢?根據Android SDK的描述,這種引數有5個:

  1. CRLF 這個引數看起來比較眼熟,它就是Win風格的換行符,意思就是使用CR LF這一對作為一行的結尾而不是Unix風格的LF

  2. DEFAULT 這個引數是預設,使用預設的方法來加密

  3. NO_PADDING 這個引數是略去加密字串最後的”=”

  4. NO_WRAP 這個引數意思是略去所有的換行符(設定後CRLF就沒用了)

  5. URL_SAFE 這個引數意思是加密時不使用對URL和檔名有特殊意義的字元來作為加密字元,具體就是以-和_取代+和/