Base64 编码解码在 Java 中的应用
简介
Base64 是一种用于将二进制数据编码成 ASCII 字符串的方法,常用于在网络传输或存储中传递二进制数据,例如图片、音频等。Base64 编码算法通过将 3 个字节的数据编码成 4 个可见字符的形式,相比原始数据,编码后的数据长度会增加约 33%。Java 内置了 Base64 编码解码的相关类,使得在 Java 中使用 Base64 变得非常简单。
Base64 编码
在 Java 中,Base64 编码可以通过 java.util.Base64
类来实现。以下是一个使用示例:
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String originalMessage = "Hello, Base64!";
// 编码
String encodedMessage = Base64.getEncoder().encodeToString(originalMessage.getBytes(StandardCharsets.UTF_8));
System.out.println("Base64 编码结果: " + encodedMessage);
}
}
以上代码中,我们首先将原始的字符串数据 Hello, Base64!
转换为字节数组,然后使用 Base64.getEncoder().encodeToString()
方法将字节数组进行编码,最后将编码结果打印出来。运行结果如下:
Base64 编码结果: SGVsbG8sIEJhc2U2NCE=
可以看到,原始字符串被成功地编码成了 Base64 字符串。
Base64 解码
与编码相反,Java 中的 Base64 解码可以通过 java.util.Base64
类来实现。以下是一个使用示例:
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String encodedMessage = "SGVsbG8sIEJhc2U2NCE=";
// 解码
byte[] decodedBytes = Base64.getDecoder().decode(encodedMessage);
String decodedMessage = new String(decodedBytes, StandardCharsets.UTF_8);
System.out.println("Base64 解码结果: " + decodedMessage);
}
}
以上代码中,我们首先将编码后的 Base64 字符串 SGVsbG8sIEJhc2U2NCE=
转换为字节数组,然后使用 Base64.getDecoder().decode()
方法将字节数组进行解码,再将解码结果转换为字符串并打印出来。运行结果如下:
Base64 解码结果: Hello, Base64!
可以看到,Base64 字符串被成功地解码成了原始字符串。
Base64 URL 编码和解码
除了常规的 Base64 编码解码外,Java 中的 Base64
类还支持 Base64 URL 编码解码。在 URL 编码中,+
字符会被替换为 -
,/
字符会被替换为 _
,同时尾部可能会包含 =
字符。以下是一个使用示例:
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class Base64Example {
public static void main(String[] args) {
String originalMessage = "Hello, Base64!";
// URL 编码
String encodedUrlMessage = Base64.getUrlEncoder().encodeToString(originalMessage.getBytes(StandardCharsets.UTF_8));
System.out.println("Base64 URL 编码结果: " + encodedUrlMessage);
// URL 解码
byte[] decodedBytes = Base64.getUrlDecoder().decode(encodedUrlMessage);
String decodedMessage = new String(decodedBytes, StandardCharsets.UTF_8);
System.out.println("Base64 URL 解码结果: " + decodedMessage);
}
}
以上代码中,我们使用 Base64.getUrlEncoder().encodeToString()
方法将原始字符串进行 URL 编码,使用 Base64.getUrlDecoder().decode()
方法将 URL 编码后的字符串进行解码。运行结果如下:
Base64 URL 编码结果: SGVsbG8sIEJhc2U2NCE
Base64 URL 解码结果: Hello, Base64!
可以看到,URL 编码和解码也能够正常工作。
总结
在 Java 中,通过内置的 java.util.Base64
类,我们可以轻松地进行 Base64 编码解码操作。无论是常规的 Base64 编码解码,还是 URL