一切福田,不離方寸,從心而覓,感無不通。

Java中的Base64编码和解码

这篇文章将讨论使用纯 Java、Guava 和 Apache Commons 进行 Base64 编码和解码。

Base64 是一组类似的二进制到文本的编码方案,通过将其转换为 ASCII 字符串格式来表示二进制数据 radix-64 表示。每个 Base64 digit 正好代表 6 位数据,也就是说 3 个字节可以用 4 个 6 位来表示 Base64 位数。
Base64 编码方案 当需要对需要在旨在处理文本数据的媒体上存储和传输的二进制数据进行编码时,通常使用。这是为了确保数据在传输过程中保持完整而不被修改。 Base64 常用于许多应用程序中,包括通过电子邮件发送 MIME 并将复杂数据存储在 XML.

1. 使用 Java 8

Java 8 最终通过提供对 Base64 编码和解码功能的支持 Base64, Base64.Encoder 和 Base64.Decoder 实用程序类。这 Base64 类包含用于获取编码器实例的静态方法(Base64.Encoder) 和解码器 (Base64.Decoder) 用于 Base64 编码方案。

以下程序使用 Base64.Encoder.encodeToString() 将指定字节数组编码为 Base64 编码字符串的方法和 Base64.Decoder.decode() 将 Base64 编码的字符串解码回新分配的字节数组的方法。

输出:

Encoded Data: VGVjaGllIERlbGlnaHQ=
Decoded Data: Techie Delight

除了将结果字节写入字符串之外,我们还可以使用字节数组来使用 Base64.Encoder.encode() 方法,如下图:

输出:

Encoded Data: VGVjaGllIERlbGlnaHQ=
Decoded Data: Techie Delight

2.使用 javax.xml.bind.DatatypeConverter

这 DatatypeConverter 类从 javax.xml.bind 包有两种方法—— printBase64Binary() 和 parseBase64Binary(),可用于将字节数组转换为包含以下词法表示的字符串 xsd:base64Binary 然后将该字符串转换回字节数组。

输出:

Encoded String: VGVjaGllIERlbGlnaHQ=
Decoded String: Techie Delight

3. 使用 Guava 库

也可以使用 Guava 的 BaseEncoding 使用 Base64 编码在字节序列和可打印 ASCII 字符串之间进行可逆转换的类。

输出:

Encoded String: VGVjaGllIERlbGlnaHQ=
Decoded String: Techie Delight

4. 使用 Apache Commons 库

Apache Commons 还提供了 Base64 算法的实现。以下代码创建一个 Base64 编解码器,然后用于对指定数据进行解码和编码。

输出:

Encoded Data: VGVjaGllIERlbGlnaHQ=
Decoded Data: Techie Delight

我们也可以使用 Apache Commons 提供的静态方法 Base64 班级 – encodeBase64() 和 decodeBase64().

输出:

Encoded Data: VGVjaGllIERlbGlnaHQ=
Decoded Data: Techie Delight

这就是Java中的base64编码和解码。

from:https://www.techiedelight.com/zh/base64-encoding-decoding-java/