android端在編碼過程中尤其涉及到加解密我們通常將加解密後的byte位元組陣列轉換為string,通常做法是使用android 提供的base64(android.util)的encodetostring函式:
那麼這其中的flags到底是什麼意思?作用是什麼呢?
通過原始碼可見flags取值範圍如下:
/**
*編碼後用cr lf這一對作為一行末尾的換行,而不是unix風格的lf換行
**/public static final int crlf = 4;
/** *此flag下編碼完成的string中會包含換行符\n,+號,末尾以「=」結束
**/
public static final int default = 0;
/** *flag to pass to to indicate that it
* itself is closed.
**/
public static final int no_close = 16;
/** *此flag下最終的編碼字串會包含換行符\n,但是末尾去掉了「=」
**/
public static final int no_padding = 1;
/** *此flag下最終編碼字串不包含換行符\n,且字串全在一行,設定此flag後crlf flag無效
**/
public static final int no_wrap = 2;
/** *編碼後,用-代替+,用_代替/,避免請求是url編碼造成的傳輸問題,包含換行符\n
**/
public static final int url_safe = 8;
ps:可以結合使用滿足我們不同需求:
base64.encodetostring(encryptdata,base64.default|base64.no_wrap|base64.url_safe);
小結用flag default編碼後,字串中帶有+號和\n換行符,發起網路請求時,當以base64字串作為引數值傳遞時,url為了傳輸安全會把+號全部變成空格,在接收端就會產生各種問題,且前端用的部分的base64解碼庫不支援\n,當字串中含有\n時無法解碼還原為。所以base64編碼時建議使用no_wrap | url_safe,這樣可以避免較多問題。 逆向開發 2 雜湊加密 base64加密
雜湊 雜湊 函式md5 sha1 256 512 hmac hash的特點 1.演算法是公開的 2.對相同資料運算,得到的結果是一樣的 3.對不同資料運算,如md5得到的結果是128位,32個字元的十六進製制表示,沒法逆運算 md5加密的特點 不可逆運算 對不同的資料加密的結果是定長的32位字元 不...
base64編碼 動畫演示 Base 64 編碼
base64 是一種十分流行的編碼方式,僅僅使用 64 個字元加等號 就可以以文字的形式表示所有的二進位制資料了,因為它能夠把二進位制格式通過編碼轉換成可見字元,所有我們就可以通過的把二進位制格式比如,檔案等通過 base64 編碼然後通過文字的形式共享出去,是不是很神奇呀。把輸入的資料轉換成 二進...
C 處理base64 以及base64的原理分析
base64的原理,base64的碼表只有64個字元,如果要表達64個字元的話,使用6的bit即可完全表示 2的6次方為64 因為base64的編碼只有6個bit即可表示,而正常的字元是使用8個bit表示,8和6的最小公倍數是24,所以4個base64字元可以表示3個標準的ascll字元 publi...