亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JAVA實現(xiàn)Base64編碼的三種方式

 更新時間:2022年06月27日 11:30:41   作者:howeres  
本文主要介紹了JAVA實現(xiàn)Base64編碼的三種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

定義: 二進制文件可視化

Base64 是一種能將任意二進制文件用 64 種字元組合成字串的方法, 彼此之間是可以互相轉換的. 也常用來表示字串加密后的內(nèi)容, 例如電子郵件 (很多文本混雜大量 加號、/、大小寫字母、數(shù)字和等號,一看就知道是 Base64)

Base64 編碼步驟:

  • 第一步,將每三個字節(jié)作為一組,一共是24個二進制位
  • 第二步,將這24個二進制位分為四組,每個組有6個二進制位 (因為 6 位 2 進制最大數(shù)為 63)
  • 第三步,在每組前面加兩個00,擴展成32個二進制位,即四個字節(jié)
  • 第四步,根據(jù)序號表(0-63),得到擴展后的每個字節(jié)的對應符號就是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 包更精簡,實際執(zhí)行效率高不少, 缺點是需要引用 Apache Commons Codec, 但 tomcat 容器下開發(fā), 一般都自動引入可直接使用.

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實現(xiàn)Base64編碼的三種方式的文章就介紹到這了,更多相關JAVA Base64編碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • des加密解密JAVA與.NET互通實例

    des加密解密JAVA與.NET互通實例

    這篇文章主要介紹了des加密解密JAVA與.NET互通實例,大家參考使用吧
    2013-12-12
  • swing分割窗口控件JSplitPane使用方法詳解

    swing分割窗口控件JSplitPane使用方法詳解

    這篇文章主要為大家詳細介紹了swing分割窗口控件JSplitPane的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 閱讀EnumSet抽象類源碼

    閱讀EnumSet抽象類源碼

    這篇文章主要介紹了閱讀EnumSet抽象類源碼,具有一定參考價值,需要的朋友可以了解下。
    2017-12-12
  • MyBatis解決Update動態(tài)SQL逗號的問題

    MyBatis解決Update動態(tài)SQL逗號的問題

    這篇文章主要介紹了MyBatis解決Update動態(tài)SQL逗號的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java之理解多態(tài)詳解

    Java之理解多態(tài)詳解

    大家好,本篇文章主要講的是Java之理解多態(tài)詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 詳解Java事件編程的使用

    詳解Java事件編程的使用

    Java事件在很多地方都可以使用,合理的使用事件編程,相比常規(guī)邏輯的編程,這可達到主次分明,讓程序吞吐量即處理能力更強,改動更少,下面我們舉一個例子說明如何使用Java使用,需要的朋友可以參考下
    2021-06-06
  • SpringBoot http請求注解@RestController原理解析

    SpringBoot http請求注解@RestController原理解析

    這篇文章主要介紹了SpringBoot http請求注解@RestController原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 數(shù)組實現(xiàn)Java 自定義Queue隊列及應用操作

    數(shù)組實現(xiàn)Java 自定義Queue隊列及應用操作

    這篇文章主要介紹了數(shù)組實現(xiàn)Java 自定義Queue隊列及應用操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 詳解Java SpringAOP切面類

    詳解Java SpringAOP切面類

    這篇文章主要為大家介紹了Java SpringAOP的切面類,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Redis緩存,泛型集合與json字符串的相互轉換實例

    Redis緩存,泛型集合與json字符串的相互轉換實例

    這篇文章主要介紹了Redis緩存,泛型集合與json字符串的相互轉換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論