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

 更新时间:2020年10月22日 08:58:26   作者:Marydon  
这篇文章主要介绍了java base64编码、解码的三种方式,帮助大家更好的理解和学习Java,感兴趣的朋友可以了解下

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

以上就是java base64编码、解码的三种方式总结的详细内容,更多关于java base64编码、解码的资料请关注脚本之家其它相关文章!

相关文章

  • Java之SpringBoot-Thymeleaf详情

    Java之SpringBoot-Thymeleaf详情

    聊Thymeleaf,需要知道为什么到了SpringBoot中就不用JSP了?这跟SpringBoot打包方式有点关系,SpringBoot项目打包是jar包,下面文章小编就对此做一个详细介绍,需要的朋友可以参考一下
    2021-09-09
  • Java 模拟数据库连接池的实现代码

    Java 模拟数据库连接池的实现代码

    这篇文章主要介绍了Java 模拟数据库连接池的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Spring装配bean方法实例总结

    Spring装配bean方法实例总结

    这篇文章主要介绍了spring装配bean方法实例总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java对象比较之equals与hashCode详解

    Java对象比较之equals与hashCode详解

    这篇文章主要介绍了Java对象比较之equals与hashCode详解,equals 方法和 hashCode 方法是 Object 类中的两个基础方法,它们共同协作来判断两个对象是否相等,需要的朋友可以参考下
    2023-12-12
  • mybatis-plus的SafetyEncryptProcessor安全加密处理示例解析

    mybatis-plus的SafetyEncryptProcessor安全加密处理示例解析

    这篇文章主要为大家介绍了mybatis-plus的SafetyEncryptProcessor安全加密处理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 教你使用Java获取当前时间戳的详细代码

    教你使用Java获取当前时间戳的详细代码

    这篇文章主要介绍了如何使用Java获取当前时间戳,通过两个java示例,向大家展示如何获取java中的当前时间戳,文本通过示例代码给大家展示了java获取当前时间戳的方法,需要的朋友可以参考下
    2022-01-01
  • Java pdu短信解码全面解析

    Java pdu短信解码全面解析

    本文是根据python的方法改写的pdu短信解码,非常不错,代码简单易懂具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • 实战分布式医疗挂号系统之设置微服务接口开发模块

    实战分布式医疗挂号系统之设置微服务接口开发模块

    这篇文章主要为大家介绍了实战分布式医疗挂号系统之接口开发医院设置微服务模块,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • Eclipse 出现A configuration with this name already exists问题解决方法

    Eclipse 出现A configuration with this name already exists问题解决方

    这篇文章主要介绍了Eclipse 出现A configuration with this name already exists问题解决方法的相关资料,需要的朋友可以参考下
    2016-11-11
  • java中InputStream获取字节大小相关方法详解

    java中InputStream获取字节大小相关方法详解

    这篇文章主要给大家介绍了关于java中InputStream获取字节大小相关方法的相关资料,在Java中要实现读取文件大小,可以使用InputStream来读取文件的内容,并通过获取读取的字节数来得到文件的大小,需要的朋友可以参考下
    2023-11-11

最新评论