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编码、解码的资料请关注脚本之家其它相关文章!

相关文章

  • springboot读取application.yml报错问题及解决

    springboot读取application.yml报错问题及解决

    这篇文章主要介绍了springboot读取application.yml报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • java字符串相加时的内存表现和原理分析

    java字符串相加时的内存表现和原理分析

    这篇文章主要介绍了java字符串相加时的内存表现和原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)

    详解JavaEE使用过滤器实现登录(用户自动登录 安全登录 取消自动登录黑用户禁止登录)

    主要介绍用户的自动登录和取消自动登录,以及实现一天自动登录或者n天实现自动登录,当用户ip被加入到黑名单之后,直接利用过滤器返回一个警告页面。接下来通过本文给大家介绍JavaEE使用过滤器实现登录的相关知识,感兴趣的朋友一起学习吧
    2016-05-05
  • Java中工具Jstack的使用实例

    Java中工具Jstack的使用实例

    jstack用于生成java虚拟机当前时刻的线程快照,下面这篇文章主要给大家介绍了关于Java中工具Jstack使用的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • Spring AOP 对象内部方法间的嵌套调用方式

    Spring AOP 对象内部方法间的嵌套调用方式

    这篇文章主要介绍了Spring AOP 对象内部方法间的嵌套调用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • SpringBoot3使用devtools实现代码热部署的详细步骤

    SpringBoot3使用devtools实现代码热部署的详细步骤

    Spring Boot DevTools是一组用于提高开发人员生产力,并加速Spring Boot应用程序开发的工具,它提供了一些功能,可以帮助开发人员更快速地构建应用程序,并减少常见的开发问题,本文给大家介绍了SpringBoot3使用devtools实现代码热部署的详细步骤,需要的朋友可以参考下
    2024-01-01
  • 浅谈Maven的安装及修改为阿里云下载依赖

    浅谈Maven的安装及修改为阿里云下载依赖

    下面小编就为大家带来一篇浅谈Maven的安装及修改为阿里云下载依赖。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java  匿名内部类详解及实例代码

    Java 匿名内部类详解及实例代码

    这篇文章主要介绍了Java 匿名内部类详解及实例代码的相关资料,需要的朋友可以参考下
    2017-02-02
  • es创建索引和mapping的实例

    es创建索引和mapping的实例

    这篇文章主要介绍了es创建索引和mapping的实例,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • Spring Boot常用的参数验证技巧和使用方法

    Spring Boot常用的参数验证技巧和使用方法

    Spring Boot是一个使用Java编写的开源框架,用于快速构建基于Spring的应用程序,这篇文章主要介绍了Spring Boot常用的参数验证技巧和使用方法,需要的朋友可以参考下
    2023-09-09

最新评论