java base64編碼、解碼的三種方式總結(jié)
1.用法介紹
方式一:DatatypeConverter
說明:使用jdk自帶的DatatypeConverter.java類實現(xiàn),但是jdk版本必須>=1.6。
import java.io.UnsupportedEncodingException; import javax.xml.bind.DatatypeConverter;
編碼
/**
* base64編碼之方法一
* @explain DatatypeConverter.java實現(xiàn)
* @param str
* 待編碼字符串
* @return 編碼字符串
*/
public static String encode(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 編碼
base64Str = DatatypeConverter.printBase64Binary(data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解碼
/**
* base64解碼之方法一
* @explain DatatypeConverter.java實現(xiàn)
* @param base64Str
* 待解碼字符串
* @return 解碼字符串
*/
public static String decode(String base64Str) {
// 解碼后的字符串
String str = "";
// 解碼
byte[] base64Data = DatatypeConverter.parseBase64Binary(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
方式二:Base64
說明:使用jdk自帶的Base64.java類實現(xiàn),但是jdk版本必須>=1.8。
import java.io.UnsupportedEncodingException; import java.util.Base64;
編碼
/**
* base64編碼之方法二
* @explain Base64.java實現(xiàn)
* @param str
* 待編碼字符串
* @return 編碼字符串
*/
public static String encode2(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 編碼
base64Str =Base64.getEncoder().encodeToString(data);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解碼
/**
* base64解碼之方法二
* @explain Base64.java實現(xiàn)
* @param base64Str
* 待解碼字符串
* @return 解碼字符串
*/
public static String decode2(String base64Str) {
// 解碼后的字符串
String str = "";
// 解碼
byte[] base64Data = Base64.getDecoder().decode(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
方式三:Base64
所需jar包:commons-codec.jar
import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Base64;
編碼
/**
* base64編碼之方法三
* @explain Base64.java實現(xiàn)
* @param str
* 待編碼字符串
* @return 編碼字符串
*/
public static String encode3(String str) {
// base64字符串
String base64Str = "";
try {
// String-->byte[]
byte[] data = str.getBytes("utf-8");
// 編碼
base64Str =Base64.encodeBase64String(data).replaceAll("\r\n", "");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return base64Str;
}
解碼
/**
* base64解碼之方法三
* @explain Base64.java實現(xiàn)
* @param base64Str
* 待解碼字符串
* @return 解碼字符串
*/
public static String decode3(String base64Str) {
// 解碼后的字符串
String str = "";
// 解碼
byte[] base64Data = Base64.decodeBase64(base64Str);
try {
// byte[]-->String
str = new String(base64Data, "utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return str;
}
2.測試
public static void main(String[] args) {
String str = "http://www.cnblogs.com/Marydon20170307";
String base64 = Base64Utils.encode(str);// aHR0cDovL3d3dy5jbmJsb2dzLmNvbS9NYXJ5ZG9uMjAxNzAzMDc=
System.out.println(base64);
String str2 = Base64Utils.decode(base64);
System.out.println(str.equals(str2));// true
}
3.效率比較
快-->慢:方式二 > 方式一 > 方式三
因此,如果項目用的是jdk1.8,最佳選擇是方式二;jdk1.6,最佳選擇是方式一。
以上就是java base64編碼、解碼的三種方式總結(jié)的詳細(xì)內(nèi)容,更多關(guān)于java base64編碼、解碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springboot讀取application.yml報錯問題及解決
這篇文章主要介紹了springboot讀取application.yml報錯問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
java字符串相加時的內(nèi)存表現(xiàn)和原理分析
這篇文章主要介紹了java字符串相加時的內(nèi)存表現(xiàn)和原理分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
詳解JavaEE使用過濾器實現(xiàn)登錄(用戶自動登錄 安全登錄 取消自動登錄黑用戶禁止登錄)
主要介紹用戶的自動登錄和取消自動登錄,以及實現(xiàn)一天自動登錄或者n天實現(xiàn)自動登錄,當(dāng)用戶ip被加入到黑名單之后,直接利用過濾器返回一個警告頁面。接下來通過本文給大家介紹JavaEE使用過濾器實現(xiàn)登錄的相關(guān)知識,感興趣的朋友一起學(xué)習(xí)吧2016-05-05
Spring AOP 對象內(nèi)部方法間的嵌套調(diào)用方式
這篇文章主要介紹了Spring AOP 對象內(nèi)部方法間的嵌套調(diào)用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot3使用devtools實現(xiàn)代碼熱部署的詳細(xì)步驟
Spring Boot DevTools是一組用于提高開發(fā)人員生產(chǎn)力,并加速Spring Boot應(yīng)用程序開發(fā)的工具,它提供了一些功能,可以幫助開發(fā)人員更快速地構(gòu)建應(yīng)用程序,并減少常見的開發(fā)問題,本文給大家介紹了SpringBoot3使用devtools實現(xiàn)代碼熱部署的詳細(xì)步驟,需要的朋友可以參考下2024-01-01
Spring?Boot常用的參數(shù)驗證技巧和使用方法
Spring Boot是一個使用Java編寫的開源框架,用于快速構(gòu)建基于Spring的應(yīng)用程序,這篇文章主要介紹了Spring?Boot常用的參數(shù)驗證技巧和使用方法,需要的朋友可以參考下2023-09-09

