java base64編碼、解碼的三種方式


java base64與字符串String之間的相互轉換

1.方式一:DatatypeConverter

  說明:使用jdk自帶的DatatypeConverter.java類實現,但是jdk版本必須>=1.6。

import java.io.UnsupportedEncodingException;
import javax.xml.bind.DatatypeConverter;

  編碼

/**
 * base64編碼之方法一
 * @explain DatatypeConverter.java實現
 * @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實現
 * @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;
}  

2.方式二:Base64

  說明:使用jdk自帶的Base64.java類實現,但是jdk版本必須>=1.8。

import java.io.UnsupportedEncodingException;
import java.util.Base64;

  編碼

/**
 * base64編碼之方法二
 * @explain Base64.java實現
 * @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實現
 * @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;
} 

3.方式三:Base64

  所需jar包:commons-codec.jar

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;

  編碼

/**
 * base64編碼之方法三
 * @explain Base64.java實現
 * @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實現
 * @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;
}

4.測試

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
	
}

5.效率比較

  快-->慢:方式二 > 方式一 > 方式三

  因此,如果項目用的是jdk1.8,最佳選擇是方式二;jdk1.6,最佳選擇是方式一。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM