Java加密與解密學習記錄02-Base64

概述

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);
發佈了87 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章