软件编程
位置:首页>> 软件编程>> java编程>> java base64编码、解码的三种方式总结

java base64编码、解码的三种方式总结

作者:Marydon  发布时间:2022-12-29 22:20:51 

标签:java,base64,编码,解码

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;
}

方式二: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;
}

方式三: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;
}

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,最佳选择是方式一。

来源:https://www.cnblogs.com/Marydon20170307/p/9358776.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com