|
有些場合下,例如在要實現(xiàn)自動登錄時本地存儲用戶的賬號和密碼,不能用明碼來標識。這時候就首先需要對這些關(guān)鍵信息進行加密。對信息進行加密有許多種,下面將詳細介紹BASE 64編碼的實現(xiàn),以及自定義BASE 64編碼表以提升解密難度。 BASE 64編碼要求把3個8位字節(jié)(3*8=24)轉(zhuǎn)化為4個6位的字節(jié)(4*6=24),之后在6位的前面補兩個0,形成8位一個字節(jié)的形式。在標準BASE 64編碼表中,最后轉(zhuǎn)化的4個6位字節(jié)都可以用ASCII明碼顯示出來。以字符串“張3”為例: 字符串:張3 原byte數(shù)組:11010101 11000101 00110011 編碼后的byte數(shù)組:00110101 00011100 00010100 00110011 對應(yīng)十進制數(shù)值:53 34 20 51 標準編碼表對應(yīng)字符:1 i U z 可以這么考慮:把字符串的原始字節(jié)數(shù)組連成一串,然后順序依次選6個出來,之后再把這6二進制數(shù)前面再添加兩個0,就成了一個新的字節(jié)。之后再選出6個來,再添加0,依此類推,直到24個二進制數(shù)全部被選完,就得到了編碼后的字節(jié)數(shù)組。 標準的BASE 64為了讓轉(zhuǎn)碼后所有的字符都可見,設(shè)計了如下標準編碼表:
2012-8-3 16:54:14 上傳 依據(jù)此表中十進制數(shù)值與字符的映射關(guān)系,最后得到標準編碼表對應(yīng)字符序列,即字符串最終編碼為“1iUz”。
3.依據(jù)編碼表對明文進行加密,具體過程為: 讀取明文3字節(jié)數(shù)據(jù)用&操作取前6位,放入新的變量中右移兩位,高兩位清0后與編碼表中相應(yīng)值進行&操作;取第一個字節(jié)的后2位和第二個字節(jié)的前4位移位放入新變量中右移兩位,清0……依此類推。 解碼為編碼的逆過程。具體代碼實現(xiàn)請參考本章Demo中的示例代碼。 Demo運行效果如下:
2012-8-3 16:50:56 上傳
|
|
|