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,最佳选择是方式一。
java base64编码、解码的三种方式的更多相关文章
- java 实现md5加密的三种方式与解密
java 实现md5加密的三种方式 CreateTime--2018年5月31日15点04分 Author:Marydon 一.解密 说明:截止文章发布,Java没有实现解密,但是已有网站可以免费 ...
- java中遍历集合的三种方式
第一种遍历集合的方式:将集合变为数组 package com.lw.List; import java.util.ArrayList; import java.util.List; import ja ...
- java加载配置文件的三种方式
比如我们要加载db.properties文件 如图: 比如我们要加载source目录下的db.properties文件.就有以下几种方式 第一种是文件io流: public static void l ...
- Java通过JDBC连接数据库的三种方式!!!并对数据库实现增删改查
前言 java连接数据库完整流程为: 1,获得驱动(driver),数据库连接(url),用户名(username),密码(password)基本信息的三种方式. 2,通过获得的信息完成JDBC实现连 ...
- java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...
- 【转载】java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...
- Java 实现线程安全的三种方式
一个程序在运行起来的时候会转换成进程,通常含有多个线程. 通常情况下,一个进程中的比较耗时的操作(如长循环.文件上传下载.网络资源获取等),往往会采用多线程来解决. 比如显示生活中,银行取钱问题.火车 ...
- HTTP:Java实现HTTP请求的三种方式
目前JAVA实现HTTP请求的方法用的最多的有两种: 一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,H ...
- Java Base64编码解码实现
我尝试过两种方式:java自带的sun.misc的工具类,还有commons-codec.jar 1.sun.misc的工具类 String encoderStr = null; BASE64Enco ...
随机推荐
- Eclipse断点调试(DBG)Android应用
1.添加断点 双击左侧边框便可添加断点,右击也能添加断点. 2.进入调试模式 点击虫子,然后选择工程运行,快捷键为单击F11 ,如果是正常运行就是Ctrl+F11 3.单步调试+跳到下一个断点 运行到 ...
- 《“胡”说IC——菜鸟工程师完美进阶》
<“胡”说IC——菜鸟工程师完美进阶> 基本信息 作者: 胡运旺 出版社:电子工业出版社 ISBN:9787121229107 上架时间:2014-5-15 出版日期:2014 年5月 开 ...
- golang常用模块介绍
golang模块 一.命令行库Cobra Cobra提供简单的接口来创建强大的现代化CLI接口,比如git与go工具.Cobra同时也是一个程序, 用于创建CLI程序 https://www.jian ...
- 使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法
需要添加dependency 和resources 否则发布的时候可能会缺少jar <dependency> <groupId>com.sap</groupId> ...
- 单一职责原则(Single Responsibility Principle,SRP)
定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的 ...
- 一种多线程写日志文件的解决方案 c#源代码演示
using System;using System.Collections.Generic;using System.Collections;using System.Text;using Syste ...
- iOS:UICollectionView的扩展应用
一.介绍 CollectionView是iOS中一个非常重要的控件,它可以实现很多的炫酷的效果,例如轮播图.瀑布流.相册浏览等.其实它和TableView很相似,都是对cell进行复用,提高系统性能. ...
- 修改IP地址的PowerShell
$wmi = Get-WmiObject win32_networkadapterconfiguration -filter "ipenabled = 'true'" $wmi.E ...
- Http协议中Get和Post的浅谈
起名困难户,每次写文章最愁的就是不知道该如何起个稍具内涵的名字,如果这篇文章我只是写写Get和Post的区别,我可以起个名字“Get和Post的那点事”,如果打算阐述一下Http协议原理性内容,那该叫 ...
- CentOS 7安装Hadoop 3.0.0
最近在学习大数据,需要安装Hadoop,自己弄了好久,最后终于弄好了.网上也有很多文章关于安装Hadoop的,但总会遇到一些问题,所以把在CentOS 7安装Hadoop 3.0.0的整个过程记录下来 ...