java base64编码的三种方式
Java 中如何使用base64编码呢?
有如下三种方式:
方式一:commons-codec.jar
- String base64String = "whuang123";
- byte[] result = Base64.encodeBase64(base64String.getBytes());
方式二:使用sun.misc.BASE64Encoder
- /**
- * 编码
- *
- * @param bstr
- * @return String
- */
- public static String encode(byte[] bstr) {
- return new sun.misc.BASE64Encoder().encode(bstr);
- }
- /**
- * 解码
- *
- * @param str
- * @return string
- */
- public static byte[] decode(String str) {
- byte[] bt = null;
- try {
- sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
- bt = decoder.decodeBuffer(str);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return bt;
- }
方式三:使用com.sun.org.apache.xerces.internal.impl.dv.util.Base64
- /***
- * encode by Base64
- */
- public static String encodeBase64(byte[] input) throws Exception {
- Class clazz = Class
- .forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
- Method mainMethod = clazz.getMethod("encode", byte[].class);
- mainMethod.setAccessible(true);
- Object retObj = mainMethod.invoke(null, new Object[] { input });
- return (String) retObj;
- }
- /***
- * decode by Base64
- */
- public static byte[] decodeBase64(String input) throws Exception {
- Class clazz = Class
- .forName("com.sun.org.apache.xerces.internal.impl.dv.util.Base64");
- Method mainMethod = clazz.getMethod("decode", String.class);
- mainMethod.setAccessible(true);
- Object retObj = mainMethod.invoke(null, input);
- return (byte[]) retObj;
- }
测试:
- package com.jn.base64;
- import junit.framework.Assert;
- import org.apache.commons.codec.binary.Base64;
- import com.common.util.SystemUtil;
- public class BaseTest {
- public static void main(String[] args) throws Exception {
- String base64String = "whuang123";
- byte[] result = Base64.encodeBase64(base64String.getBytes());
- SystemUtil.printBytes(result);
- byte[] result2 = SystemUtil.encode(base64String.getBytes()).getBytes();
- System.out.println("result2:"+result2);
- byte[] result3 = SystemUtil.encodeBase64(base64String.getBytes()).getBytes();
- boolean isSuccess = SystemUtil.isSame(result, result2);
- Assert.assertEquals(true, isSuccess);
- SystemUtil.printBytes(result2);
- SystemUtil.printBytes(result3);
- System.out.println(isSuccess);
- }
- }
运行结果如下:
java base64编码的三种方式相关推荐
- base64编码的三种方式、各方式性能比较
转载链接:java 实现base64编码的三种方式.各方式性能比较.最后给出最优工具类 小白实操记录 转载内容: 简单介绍了base64编码,给出三种实现方式性能比较,可直接使用最后提供的工具类,性能 ...
- response设置编码的三种方式以及比较
https://blog.csdn.net/u010653908/article/details/53994021 response设置编码的三种方式以及比较 2017年01月03日 14:12:46 ...
- JAVA实现多线程的三种方式
在Java中可通过三种方式来实现多线程: 1.继承Thread类,重写run( )方法 2.实现Runnable接口,重写run( )方法 3.实现Callable接口,重写call( )方法并使用F ...
- Java实现数据共享的三种方式
Java实现数据共享的三种方式 目录 文章目录 1.类的静态变量 2.类内声明共享数据类型的引用 3.内部类 ***后记*** : 内容 1.类的静态变量 示例:老师和学生共用一间教室 Classro ...
- java获取时间戳的三种方式比较
文章目录 java获取时间戳的三种方式比较 java获取时间戳的三种方式比较 import java.util.Calendar; import java.util.Date; //不再推荐使用Dat ...
- Java数组定义的三种方式
Java数组定义的三种方式 第一种:先声明,分配空间,赋值 int[] arr; //先声明arr=new int[10]; //分配空间fo0(int i=0;i<10;i++){arr[i] ...
- java 创建线程_【80期】说出Java创建线程的三种方式及对比
点击上方"Java面试题精选",关注公众号 面试刷图,查缺补漏 >>号外:往期面试题,10篇为一个单位归置到本公众号菜单栏->面试题,有需要的欢迎翻阅. 一.Ja ...
- Java创建线程的三种方式,以前只知道两种,现在添加一种Callable与FutureTask创建的方式
一共有以下三种方式: 1.继承Thread 2.实现Runnable 3.实现Callable,并FutureTask包装 线程启动方式均是使用start()方法 先阐述优缺点: 1和2,3: 2,3 ...
- Java创建线程的三种方式
一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实 ...
最新文章
- linux u8 头文件,2019-12-11 转载TCP/IP编程常用C语言头文件
- 服务器维修一天,魔兽世界怀旧服一天增加16个服务器,维护四次,这才是明智选择...
- Android中使用am命令实现在命令行启动程序详解
- 因让员工加班 去哪儿网被处罚3250元!网友:是不是少了个“万”?
- base32解码工具_[随波逐流]CTF编码工具 V1.0
- Linux上快速安装软RAID详细步骤
- Android 微信人脸识别+微信二维码
- 马克思主义基本原理概论第一章笔记
- 如何在Windows 10上修复缩略图问题
- 照片制作手机壳,定制手机壳diy需要什么设备?
- Warning One or more files are in a conflicted state.
- access筛选末位数字为1或5_数字鸿沟理论不会用?北大必考常考,我们以快手短视频为例...
- CF869E The Untended Antiquity(二维数状数组+差分+hash)
- 漫谈递归——递归需要满足的两个条件
- 【GoLang】Map的遍历
- idea 配置web项目图片无法显示问题
- 瞎想-电信IPTV如何做到真高清真4K直播
- 西门子PLC1200学习之PID总结
- 字符串转码中文乱码问题的进一步理解 UTF-8 GBK转码
- Android 软件升级
热门文章
- 关于go访问rabbitmq的连接池
- Centos7允许3306端口通过防火墙
- thinkphp关联查询(多表查询)
- 用计算机演银河系,专家首次用计算机模拟类银河星系 分辨率极高
- JVM优化系列-Java对象引用与可触及强度
- redis有序集合sorted set详解
- : Attribute xmlns was already specified for element web-app.
- ​同样更新分支,git merge 和 rebase 有什么区别?
- brew 安装php56,homebrew安装php5.6后的信息
- 美团(Leaf)分布式ID算法