Java Base64 编码与解码

2025 年 4 月 21 日 | 阅读 5 分钟

Java 提供了一个 Base64 类来处理加密。您可以通过使用提供的各种方法来加密和解密您的数据。您需要在源文件中导入 `java.util.Base64` 来使用它的方法。

此类提供了三种不同的编码器和解码器,可在每个级别加密信息。您可以在以下级别使用这些方法。


基本编码和解码

它使用 Java 在 RFC 4648 和 RFC 2045 中指定的 Base64 字母表进行编码和解码操作。编码器不添加任何行分隔符字符。解码器会拒绝包含 Base64 字母表之外字符的数据。


URL 和文件名编码和解码

它使用 Java 在 RFC 4648 中指定的 Base64 字母表进行编码和解码操作。编码器不添加任何行分隔符字符。解码器会拒绝包含 Base64 字母表之外字符的数据。


MIME

它使用 RFC 2045 中指定的 Base64 字母表进行编码和解码操作。编码输出必须表示为每行不超过 76 个字符,并使用回车符 '\r' 后跟换行符 '\n' 作为行分隔符。编码输出的末尾不添加行分隔符。解码操作会忽略 Base64 字母表中的所有行分隔符或其他字符。


Base64 的嵌套类

Class描述
Base64.Decoder此类实现了根据 RFC 4648 和 RFC 2045 指定的 Base64 编码方案进行解码的解码器。
Base64.Encoder此类实现了根据 RFC 4648 和 RFC 2045 指定的 Base64 编码方案进行编码的编码器。

Base64 方法

方法描述
public static Base64.Decoder getDecoder()它返回一个使用基本类型的 Base64 编码方案进行解码的 `Base64.Decoder`。
public static Base64.Encoder getEncoder()它返回一个使用基本类型的 Base64 编码方案进行编码的 `Base64.Encoder`。
public static Base64.Decoder getUrlDecoder()它返回一个使用 URL 和文件名安全类型的 Base64 编码方案进行解码的 `Base64.Decoder`。
public static Base64.Decoder getMimeDecoder()它返回一个使用 MIME 类型 Base64 解码方案进行解码的 `Base64.Decoder`。
public static Base64.Encoder getMimeEncoder()它返回一个使用 MIME 类型 Base64 编码方案进行编码的 `Base64.Encoder`。
public static Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator)它返回一个使用指定的行长度和行分隔符的 MIME 类型 Base64 编码方案进行编码的 `Base64.Encoder`。
public static Base64.Encoder getUrlEncoder()它返回一个使用 URL 和文件名安全类型的 Base64 编码方案进行编码的 `Base64.Encoder`。

Base64.Decoder 方法

方法描述
public byte[] decode(byte[] src)它使用 Base64 编码方案解码输入字节数组中的所有字节,并将结果写入新分配的输出字节数组。返回的字节数组的长度等于结果字节的长度。
public byte[] decode(String src)它使用 Base64 编码方案将 Base64 编码的字符串解码为新分配的字节数组。
public int decode(byte[] src, byte[] dst)它使用 Base64 编码方案解码输入字节数组中的所有字节,并将结果写入给定的输出字节数组,从偏移量 0 开始。
public ByteBuffer decode(ByteBuffer buffer)它使用 Base64 编码方案解码输入字节缓冲区中的所有字节,并将结果写入新分配的 `ByteBuffer`。
public InputStream wrap(InputStream is)它返回一个用于解码 Base64 编码的字节流的输入流。

Base64.Encoder 方法

方法描述
public byte[] encode(byte[] src)它使用 Base64 编码方案将指定字节数组中的所有字节编码为新分配的字节数组。返回的字节数组的长度等于结果字节的长度。
public int encode(byte[] src, byte[] dst)它使用 Base64 编码方案将指定字节数组中的所有字节编码,并将结果字节写入给定的输出字节数组,从偏移量 0 开始。
public String encodeToString(byte[] src)它使用 Base64 编码方案将指定的字节数组编码为字符串。
public ByteBuffer encode(ByteBuffer buffer)它使用 Base64 编码方案将指定字节缓冲区中所有剩余的字节编码为新分配的 `ByteBuffer`。返回后,源缓冲区的 `position` 将更新为其 `limit`;其 `limit` 不会改变。返回的输出缓冲区的 `position` 将为零,其 `limit` 将是结果编码字节的数量。
public OutputStream wrap(OutputStream os)它包装一个输出流,用于使用 Base64 编码方案对字节数据进行编码。
public Base64.Encoder withoutPadding()它返回一个编码器实例,该实例的编码方式与当前实例相同,但不会在编码后的字节数据末尾添加任何填充字符。

Java Base64 示例:基本编码和解码

输出

Encoded byte array: [B@6bc7c054
Encoded byte array written to another array: [B@232204a1
Number of bytes written: 4
Encoded string: SmF2YVRwb2ludA==
Decoded string: JavaTpoint

Java Base64 示例:URL 编码和解码

输出

Encoded URL: aHR0cDovL3d3dy5qYXZhdHBvaW50LmNvbS9qYXZhLXR1dG9yaWFsLw==
Decoded URL: https://tpointtech.cn/java-tutorial/

Java Base64 示例:MIME 编码和解码

输出

Encoded MIME message: SGVsbG8sIApZb3UgYXJlIGluZm9ybWVkIHJlZ2FyZGluZyB5b3VyIGluY29uc2lzdGVuY3kgb2Yg
d29yaw==
Decoded message: Hello, 
You are informed regarding your inconsistency of work
下一主题Java 默认方法