最近集成第三方sdk時須要Basic Authentication認證,在用Base64加密作籤權的時候用Base64.DEFAULT一直不能籤權成功,最後用Base64.NO_WRAP成功了。
後來查了一下緣由,原來使用Base64.DEFAULT當字符串過長(通常超過76)時會自動在中間加一個換行符,字符串最後也會加一個換行符,這樣就致使和其餘模塊對接時結果不一致,因而籤權失敗。而Base64.NO_WRAP 這個參數意思是略去全部的換行符,所以籤權成功。
所以Android端使用Base64加密解密時應使用Base64.NO_WRAP。
其餘幾種加密解密方式的含義:加密
CRLF:這個參數看起來比較眼熟,它就是Win風格的換行符,意思就是使用CR LF這一對做爲一行的結尾而不是Unix風格的LF DEFAULT:這個參數是默認,使用默認的方法來加密 NO_PADDING:這個參數是略去加密字符串最後的「=」 NO_WRAP:這個參數意思是略去全部的換行符(設置後CRLF就沒用了) URL_SAFE:這個參數意思是加密時不使用對URL和文件名有特殊意義的字符來做爲加密字符,具體就是以-和_取代+和/