JAVA实现Base64编码的三种方式
定义: 二进制文件可视化
Base64 是一种能将任意二进制文件用 64 种字元组合成字串的方法, 彼此之间是可以互相转换的. 也常用来表示字串加密后的内容, 例如电子邮件 (很多文本混杂大量 加号、/、大小写字母、数字和等号,一看就知道是 Base64)
Base64 编码步骤:
- 第一步,将每三个字节作为一组,一共是24个二进制位
- 第二步,将这24个二进制位分为四组,每个组有6个二进制位 (因为 6 位 2 进制最大数为 63)
- 第三步,在每组前面加两个00,扩展成32个二进制位,即四个字节
- 第四步,根据序号表(0-63),得到扩展后的每个字节的对应符号就是Base64的编码值
sun 包下的 BASE64Encoder
早期在 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"));
apache 包下的 Base64
比 sun 包更精简,实际执行效率高不少, 缺点是需要引用 Apache Commons Codec, 但 tomcat 容器下开发, 一般都自动引入可直接使用.
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"));
util 包下的 Base64 (jdk8)
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"));
Java 8 提供的 Base64 效率最高. 实际测试编码与解码速度, Java 8 的 Base64 要比 sun包下的要快大约 11 倍,比 Apache 的快大约 3 倍.
到此这篇关于JAVA实现Base64编码的三种方式的文章就介绍到这了,更多相关JAVA Base64编码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
javax.persistence中@Column定义字段类型方式
这篇文章主要介绍了javax.persistence中@Column定义字段类型方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-11-11Springboot多数据源配置之整合dynamic-datasource方式
这篇文章主要介绍了Springboot多数据源配置之整合dynamic-datasource方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-03-03Java的Struts框架中Action的编写与拦截器的使用方法
这篇文章主要介绍了Java的Struts框架中Action的编写与拦截器的使用方法,Struts框架是Java的SSH三大web开发框架之一,需要的朋友可以参考下2015-11-11在SpringBoot中使用jwt实现token身份认证的实例代码
你还不会在SpringBoot中使用jwt实现token身份认证吗,本文小编就给大家详细的介绍一下在SpringBoot中使用jwt实现token身份认证的实例代码,感兴趣的同学可以自己动手试一试2023-09-09
最新评论