介绍
在本实验中,我们将学习如何使用 java.util.Base64
类和 Apache Commons 库在 Java 中对 Base64 数据进行编码和解码。
在本实验中,我们将学习如何使用 java.util.Base64
类和 Apache Commons 库在 Java 中对 Base64 数据进行编码和解码。
在这一步中,你将创建一个新的 Java 文件。打开终端并执行以下命令来创建一个新的 Java 文件:
touch ~/project/Base64Encoding.java
该命令将在 ~/project
目录下创建一个名为 Base64Encoding.java
的新文件。你可以使用任何喜欢的名称,但确保它以 .java
结尾。
在这一步中,我们将学习基本编码与解码。
getEncoder()
方法,该方法返回一个简单的 Base64.Encoder。encodeToString()
方法对字符串进行编码。对于解码已编码的字符串,我们将使用 getDecoder()
方法返回的 Base64.Decoder。
decode()
方法。使用以下代码块对字符串进行编码和解码:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // 将字符串转换为字节数组
// 编码
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
// 解码
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
}
}
在终端中执行以下命令以编译并运行代码:
javac Base64Encoding.java && java Base64Encoding
在上一步中,我们看到编码会在编码后的字符串末尾添加填充字符( = )。在这一步中,我们将学习如何在不添加填充字符的情况下进行编码。
使用以下代码块对字符串进行无填充编码:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // 将字符串转换为字节数组
// 无填充编码
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
}
}
在终端中执行以下命令以编译并运行代码:
javac Base64Encoding.java && java Base64Encoding
在这一步中,我们将学习 URL 和文件名安全的编码与解码。
Base64 类通过使用 URL 和文件名安全的 Base64 字母表 来处理 URL 编码和解码。
getUrlEncoder()
方法获取一个 Base64 URL 编码器。encodeToString()
方法。同样地,我们有一个 getUrlDecoder()
方法,它返回一个 URL 解码器。
decode()
方法进行解码。使用以下代码块对 URL 进行编码和解码:
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// 编码
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("Encoded URL: " + encodedUrl);
// 解码
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("Decoded URL: " + decodedUrl);
}
}
在终端中执行以下命令以编译并运行代码:
javac Base64Encoding.java && java Base64Encoding
在这一步中,我们将学习 MIME 编码与解码。
我们可以使用 getMimeEncoder()
和 encodeToString()
方法进行编码。
对于解码,我们将使用 getMimeDecoder()
方法获取解码器,然后使用 decode()
方法。
使用以下代码块对 MIME 数据进行编码和解码:
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// 创建用于编码的 MIME 输入
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// 编码
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("Encoded String: " + mimeEncodedStr);
// 解码
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
在终端中执行以下命令以编译并运行代码:
javac Base64Encoding.java && java Base64Encoding
在这一步中,我们将学习如何使用 Apache Commons 库对 Base64 数据进行编码和解码。
Apache Commons 库在其 org.apache.commons.codec.binary
包中提供了一个 Base64 类。
encode()
和 decode()
方法对字符串字节进行编码和解码。使用以下代码块通过 Apache Commons Base64 类对字符串进行编码和解码:
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// 编码
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("Encoded String: " + encodedStr);
// 解码
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
// 直接使用静态方法 encodeBase64() 和 decodeBase64() 访问 API
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
在终端中执行以下命令以编译并运行代码:
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
注意: 要运行此代码,你需要下载并将 Apache Commons Codec 库的 .jar
文件导入到类路径中。在上面的命令中,我们添加了 -cp commons-codec-1.15.jar
来指定库的类路径。
在本实验中,我们学习了如何使用 java.util.Base64
类和 Apache Commons 库在 Java 中对 Base64 数据进行编码和解码。我们涵盖了三种不同的 Base64 编码和解码方案——基本(Basic)、URL 和文件名安全(URL and Filename safe)以及 MIME。