JAVA實現Base64編碼的三種方式
定義: 二進制文件可視化
Base64 是一種能將任意二進制文件用 64 種字元組合成字串的方法, 彼此之間是可以互相轉換的. 也常用來表示字串加密後的內容, 例如電子郵件 (很多文本混雜大量 加號、/、大小寫字母、數字和等號,一看就知道是 Base64)
Base64 編碼步驟:
- 第一步,將每三個字節作為一組,一共是24個二進制位
- 第二步,將這24個二進制位分為四組,每個組有6個二進制位 (因為 6 位 2 進制最大數為 63)
- 第三步,在每組前面加兩個00,擴展成32個二進制位,即四個字節
- 第四步,根據序號表(0-63),得到擴展後的每個字節的對應符號就是Base64的編碼值
sun 包下的 BASE64Encoder
早期在 Java 上做 Base64 的編碼與解碼, 會使用到 JDK 裡的 sun.misc 套件下的 BASE64Encoder 和 BASE64Decoder 這兩個類, 缺點是編碼和解碼的效率不高
final BASE64Encoder encoder = new BASE64Encoder(); final BASE64Decoder decoder = new BASE64Decoder(); final String text = "字串文字"; final byte[] textByte = text.getBytes("UTF-8"); //編碼 final String encodedText = encoder.encode(textByte); System.out.println(encodedText); //解碼 System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));
apache 包下的 Base64
比 sun 包更精簡,實際執行效率高不少, 缺點是需要引用 Apache Commons Codec, 但 tomcat 容器下開發, 一般都自動引入可直接使用.
final Base64 base64 = new Base64(); final String text = "字串文字"; final byte[] textByte = text.getBytes("UTF-8"); //編碼 final String encodedText = base64.encodeToString(textByte); System.out.println(encodedText); //解碼 System.out.println(new String(base64.decode(encodedText), "UTF-8"));
util 包下的 Base64 (jdk8)
java 8 的 java.util 包下 Base64 類, 可用來處理 Base64 的編碼與解碼
final Base64.Decoder decoder = Base64.getDecoder(); final Base64.Encoder encoder = Base64.getEncoder(); final String text = "字串文字"; final byte[] textByte = text.getBytes("UTF-8"); //編碼 final String encodedText = encoder.encodeToString(textByte); System.out.println(encodedText); //解碼 System.out.println(new String(decoder.decode(encodedText), "UTF-8"));
Java 8 提供的 Base64 效率最高. 實際測試編碼與解碼速度, Java 8 的 Base64 要比 sun包下的要快大約 11 倍,比 Apache 的快大約 3 倍.
到此這篇關於JAVA實現Base64編碼的三種方式的文章就介紹到這瞭,更多相關JAVA Base64編碼內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- java中Base64編碼原理實例講解
- java必懂的冷知識點之Base64加密與解密
- java實現後臺處理base64圖片還原為文件
- 關於Java中byte[] 和 String互相轉換問題
- Java字符串的壓縮與解壓縮的兩種方法