📅  最后修改于: 2023-12-03 14:42:56.484000             🧑  作者: Mango
Base64是一种用于将二进制数据转换为纯文本格式的编码方法。Java中提供了基本类型的Base64编码和解码方法,在某些场景下可以很方便地使用。
Java中的Base64编码有两种方式:基本类型Base64编码和URL安全的Base64编码。基本类型Base64编码使用标准的Base64字符集,而URL安全的Base64编码使用了一些特殊字符替换了标准Base64字符集中的一些字符,使其可以在URL中安全地传输。
Java中提供了两个类用于基本类型Base64编码:java.util.Base64和java.util.Base64.Encoder。其中,java.util.Base64.Encoder类负责编码操作,其常用方法如下:
// 获取编码器实例
Encoder encoder = Base64.getEncoder();
// 对字节数组进行编码
byte[] data = {1, 2, 3, 4, 5};
byte[] encodedData = encoder.encode(data);
// 将字节数组编码为字符串
String strData = "hello";
byte[] strBytes = strData.getBytes();
String encodedStr = encoder.encodeToString(strBytes);
在以上示例中,Encoder类的encode方法可以对一个字节数组进行Base64编码,而encodeToString方法则可以对一个字符串进行Base64编码,并返回一个Base64字符串。
Java中提供了两个类用于URL安全的Base64编码:java.util.Base64和java.util.Base64.getUrlEncoder()。其中,java.util.Base64.getUrlEncoder()方法用于获取一个URL安全的编码器实例,其常用方法和基本类型编码类似。
以下是一个对URL地址进行Base64编码的示例:
// 获取URL安全的编码器实例
Encoder encoder = Base64.getUrlEncoder();
// 对URL地址进行编码
String url = "https://www.example.com/welcome?name=张三";
byte[] urlBytes = url.getBytes();
String encodedUrl = encoder.encodeToString(urlBytes);
System.out.println(encodedUrl);
在以上示例中,Encoder类的encodeToString方法将一个URL地址进行了Base64编码,得到了一个URL安全的Base64字符串。可以看到,Base64编码后的字符串中不包含特殊字符,可以安全地用于URL传输。
Java中的Base64解码也有两种方式:基本类型Base64解码和URL安全的Base64解码。相应地,Java中也提供了两个类用于解码操作:java.util.Base64和java.util.Base64.Decoder。
Java中提供的java.util.Base64.Decoder类用于基本类型Base64解码,其常用方法如下:
// 获取解码器实例
Decoder decoder = Base64.getDecoder();
// 对Base64字符串进行解码
String base64Data = "aGVsbG8=";
byte[] decodedBytes = decoder.decode(base64Data);
// 将解码后的字节数组转换为原始数据类型
int intValue = ByteBuffer.wrap(decodedBytes).getInt();
System.out.println(intValue);
在以上示例中,Decoder类的decode方法可以对一个Base64字符串进行解码。解码后,得到的是一个字节数组,可以根据需要将其转换为原始数据类型。
Java中提供的java.util.Base64.getUrlDecoder()方法用于获取一个URL安全的解码器实例,其常用方法和基本类型解码类似。
以下是一个对URL安全的Base64字符串进行解码的示例:
// 获取URL安全的解码器实例
Decoder decoder = Base64.getUrlDecoder();
// 对URL安全的Base64字符串进行解码
String encodedUrl = "aHR0cHM6Ly93d3cueGFtcGxlLmNvbS9oZWxsbz9uYW1lPWJhc2U=";
byte[] urlBytes = decoder.decode(encodedUrl);
String url = new String(urlBytes);
System.out.println(url);
在以上示例中,Decoder类的decode方法可以对一个URL安全的Base64字符串进行解码,并得到一个字节数组。可以看到,解码后得到的是一个字符串,该字符串和Base64编码前的字符串完全一致。
本文介绍了Java中的基本类型Base64编码和解码。在实际开发中,可以根据需要选择相应的编码方式。需要注意的是,Base64编码虽然可以将二进制数据转换为文本格式,但并不是加密算法,因此不要将敏感信息直接以Base64字符串的形式传输。