概述

java对base64编解码的通用处理方法。

关于base64编码Encode和Decode编码的几种方式

Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便。在实际应用上,Base64除了能将Binary资料可视化之外,也常用来表示字串加密过后的内容。如果要使用Java 程式语言来实作Base64的编码与解码功能,可以参考本篇文章的作法。

早期作法

早期在Java上做Base64的编码与解码,会使用到JDK里sun.misc套件下的BASE64Encoder和BASE64Decoder这两个类别,用法如下:

final BASE64Encoder encoder = new BASE64Encoder();
final BASE64Decoder decoder = new BASE64Decoder();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = encoder.encode(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(decoder.decodeBuffer(encodedText), "UTF-8"));

从以上程式可以发现,在Java用Base64一点都不难,不用几行程式码就解决了!只是这个sun.mis c套件所提供的Base64功能,编码和解码的效率并不太好,而且在以后的Java版本可能就不被支援了,完全不建议使用。

Apache Commons Codec作法

Apache Commons Codec有提供Base64的编码与解码功能,会使用到org.apache.commons.codec.binary套件下的Base64类别,用法如下:

final Base64 base64 = new Base64();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = base64.encodeToString(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(base64.decode(encodedText), "UTF-8"));

以上的程式码看起来又比早期用sun.mis c套件还要更精简,效能实际执行起来也快了不少。缺点是需要引用Apache Commons Codec,很麻烦。

Java 8之后的作法

Java 8的java.util套件中,新增了Base64的类别,可以用来处理Base64的编码与解码,用法如下:

final Base64.Decoder decoder = Base64.getDecoder();
final Base64.Encoder encoder = Base64.getEncoder();
final String text = "字串文字";
final byte[] textByte = text.getBytes("UTF-8");
//编码
final String encodedText = encoder.encodeToString(textByte);
System.out.println(encodedText);
//解码
System.out.println(new String(decoder.decode(encodedText), "UTF-8"));

与sun.mis c套件和Apache Commons Codec所提供的Base64编解码器来比较的话,Java 8提供的Base64拥有更好的效能。实际测试编码与解码速度的话,Java 8提供的Base64,要比sun.mis c套件提供的还要快至少11倍,比Apache Commons Codec提供的还要快至少3倍。因此在Java上若要使用Base64,这个Java 8底下的java .util套件所提供的Base64类别绝对是首选!

参考

Java如何进行Base64的编码(Encode)与解码(Decode)?

Java对base64编解码总结相关推荐

  1. Java实现BASE64编解码

    Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  2. Java 原生 Base64 编解码、Md5、SHA-1、SHA-256 加密摘要算法

    目录 常用加密算法对比 Base64 编解码 MessageDigest 信息摘要 MD5 信息摘要算法 常用加密算法对比 常用加密算法对比 Base64 编解码 1.BASE64 有自己的编码表,可 ...

  3. Base64编解码原理并用Java手工实现Base64编解码

    Base64编解码原理 目前Base64已经成为网络上常见的传输8比特字节代码的编码方式之一.在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后进行签名或加密,之后再次Bas ...

  4. base64 decode java_Java实现Base64编解码

    为什么要用Base64编码 在网络中传输数据都是使用ascii方式传输.对于一些图片.视频等数据,可能就会被编码成ascii中不可见部分的编码.网络中不同的路由设备处理方式不同,有可能就会把这部分数据 ...

  5. Java 8实现BASE64编解码

    Java 8实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用 ...

  6. Jva编解码,加密工具类大全(Base64编解码,URL 编解码,sha56_Hmac加密,MD5对字符串进行加密,java自带类实现SHA-256方式加密)

    Base64编解码 /*** Base64编码.*/public static String encodeBase64(byte[] input) {return new String(Base64. ...

  7. 图片解码 java_Java 8实现图片BASE64编解码

    前言 Basic编码是标准的BASE64编码,用于处理常规的需求:输出的内容不添加换行符,而且输出的内容由字母加数字组成. 最近做了个Web模版,其中想用Base64背景图.虽然网络上有现成的编码器, ...

  8. 通过OpenSSL的接口实现Base64编解码

    对openssl genrsa产生的rsa私钥pem文件,使用普通的base64解码会有问题,如使用https://blog.csdn.net/fengbingchun/article/details ...

  9. python 图片base64 编解码,转换成Opencv,PIL.Image图片格式

    Python PIL.Image和OpenCV图像格式相互转换 二进制打开图片文件,base64编解码转成Opencv格式: # coding: utf-8 import base64 import ...

最新文章

  1. C#游戏开发快速入门2.2改变游戏对象的状态
  2. mysql实现读写分离
  3. 如何使用Hibernate将PostgreSQL枚举映射到JPA实体属性
  4. Tomcat无需输入项目名,直接用域名访问项目
  5. 中国最闷声发大财的城市,人均GDP超杭州
  6. 本地随机图床api源码
  7. 基于 Linux 和 MiniGUI 的嵌入式系统软件开发指南(一)(转)
  8. ASP母版页与内容页不同目录 链接问题
  9. Altlas M1 and Tips of Debugger Visualizers
  10. 快速学懂pandas
  11. Gale-Shapley算法(基于python3.6)
  12. 写给大佬看的STP算法详细配置实验过程
  13. popen 的使用方法及场景
  14. java中高级面试_中高级面试常问:Java面向对象设计的六大原则
  15. I-Deas TMG 培训资料 (1)
  16. 微信小程序退出按钮回退到登录页面
  17. golang实现稀疏数组(Sparse array)
  18. Java基础三个排序详解_继承粗解语法关键字分析
  19. 淘宝代购系统|代购网站建设|代购系统开发代码对接教程
  20. xmos-XVF3000简介

热门文章

  1. 【C语言从青铜到王者】第零篇·与C语言来个约会
  2. 计算机应用基础在线作业3,《计算机应用基础》15春在线作业3
  3. 为什么单片机管脚设计成低电平才有效
  4. 合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信监息提取、测
  5. vs2013 分析 profiler 导致电脑重启
  6. 信息化也需要雅俗包装
  7. 大数据归档-冷热数据分离
  8. TreeSet引发的OSGI服务代理创建异常
  9. 保密协议无效认定_保密协议与竞业限制协议有何区别?
  10. 干货教程:数据结构与算法之美