栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java实现Base64编码和解码的方式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java实现Base64编码和解码的方式

base64 编码是什么?

base64 是一种编码的方式, 并不是安全领域的加密解密算法。

base64 的目的是把一些二进制符转成普通字符, 方便在网络上传输。

因为有些系统只能使用ASCII字符,有些二进制字符是控制字符,不能直接传送, 需要转换。
base64 作用将 非ASCII字符转换为ASCII字符。

怎么转换的,可以参考下面这篇。
base64 编码介绍

Java实现base64编码和解码的方式

在Java 中, 使用base64进行编码和解码的方式常见的有三种:

  • [推荐] 从Java 8 开始, base64 就成为Java类库的标准,位于java.util 的包下。对应类是base64。
  • Java 7及之前的版本,JDK默认没有支持base64, 需要导入JRE 目录的lib 下的文件 rt.jar, 通过sun.misc.base64Encoder 和sun.misc.base64Decoder 进行加解密。(完整的路径%JAVA_HOME%jrelibrt.jar)。 在JDK8中依旧可以使用这个方法。
  • Apache Commons Codec, 这是Apache 提供的常见编码器和解码器的实现,包括: base64、Hex、Phonetic 和 URL。
Java 8 内置base 64 编码器、解码器

Java 8 中通过java.util.base64 提供的方法进行base 64的编码和解码。

  • 这里以“123” 的编码为例, 编码后的字符串是 “MTIz”。
	@Test
	public void jdk8() {
		// 编码
		String encodedStr = java.util.base64.getEncoder().encodeToString("123".getBytes());
		Assertions.assertEquals(encodedStr, "MTIz");

		// 解码
		byte[] decodeBytes = java.util.base64.getDecoder().decode("MTIz");
		Assertions.assertEquals(new String(decodeBytes), "123");
	}
Java 7使用rt.jar 中的相关类进行编码和解码

rt.jar 中用于处理的类是 sun.misc.base64Encoder 和sun.misc.base64Decoder 。通过创建这两个类的实例后,调用encode() 和 decodeBuffer() 方法。 示例代码如下:

	@Test
	public void jdk7() throws IOException {
		String encodedStr =  new sun.misc.base64Encoder().encode("123".getBytes());
		Assertions.assertEquals(encodedStr, "MTIz");
		
		byte[] decodeBytes =  new sun.misc.base64Decoder().decodeBuffer("MTIz");
		Assertions.assertEquals(new String(decodeBytes), "123");

	}

Apache Commons Codec 实现base64 的编码和解码

Apache Commons Codec 的官方地址是:
https://commons.apache.org/proper/commons-codec/。
Apache Commons Codec 用来处理base64的类是 org.apache.commons.codec.binary.base64。

	@Test
	public void apacheCodec() {
		String encodedStr = org.apache.commons.codec.binary.base64.encodebase64String("123".getBytes());
		Assertions.assertEquals(encodedStr, "MTIz");
		
		byte[] decodeBytes =   org.apache.commons.codec.binary.base64.decodebase64("MTIz");
		Assertions.assertEquals(new String(decodeBytes), "123");	
	}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/694698.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号