概述
Base64編碼,是我們程序開發中經常使用到的編碼方法。它是一種基於用64個可打印字符來表示二進制數據的表示方法。它通常用作存儲、傳輸一些二進制數據編碼方法!也是MIME(多用途互聯網郵件擴展,主要用作電子郵件標準)中一種可打印字符表示二進制數據的常見編碼方法!它其實只是定義用可打印字符傳輸內容一種方法,並不會產生新的字符集!有時候,我們學習轉換的思路後,我們其實也可以結合自己的實際需要,構造一些自己接口定義編碼方式。好了,我們一起看看,它的轉換思路吧!
Base64實現轉換原理
它是用64個可打印字符表示二進制所有數據方法。由於2的6次方等於64,所以可以用每6個位元爲一個單元,對應某個可打印字符。我們知道三個字節有24個位元,就可以剛好對應於4個Base64單元,即3個字節需要用4個Base64的可打印字符來表示。在Base64中的可打印字符包括字母A-Z、a-z、數字0-9 ,這樣共有62個字符,此外兩個可打印符號在不同的系統中一般有所不同。但是,我們經常所說的Base64另外2個字符是:“+/”。這64個字符,所對應表如下。
轉換步驟
1)將給定的字符串轉換成對應的字符編碼(如:GBK、UTF-8)
2)將獲得該字符編碼轉換成二進制碼
3)對獲得的二進制碼進行分組操作
第一步:每3個字節(8位二進制)爲一組,一共24個二進制位
第二步:將這個24個二進制位分成4組,每個組有6個二進制位,不足6位的,後面補0。
第三步:在每個組前面加兩個0,這樣每個組就又變成了8位,即每個組一個字節,4個組就4個字節了。
第四步:根據Base64的轉碼錶找到每個字節對應的符號,這個符號就是Base64的編碼值
經過Base64編碼後的字符串的字符數一定是4的整數倍。在使用Base64編碼時,如果得到的字符數不爲4的整數倍,則後面使用等號 ‘=’補足
Java中的實現
Java版Base64編碼和解碼實現:
使用Apache的org.apache.commons.codec.binary.Base64類
//Base64編碼
String str = new String(Base64.encodeBase64("中國".getBytes("utf-8")) ,"utf-8");
System.out.println(str);
//Base64編碼,對輸出結果中,每76個字符追加一個回車換行符
String str = new String(Base64.encodeBase64("中國".getBytes("utf-8") ,true) ,"utf-8");
System.out.println(str);
//Base64解碼
String str2 = new String(Base64.decodeBase64(str.getBytes("utf-8")) ,"utf-8");
System.out.println(str2);