Base64概述
Base64是jdk8提出的一个新特性,可以用来进行按照一定规则编码和解码
Base64编码和解码的相关方法
- 编码的步骤:
- 获取编码器
- 调用方法进行编码
- 解码步骤:
- 获取解码器
- 调用方法进行解码
- Base64工具类提供了一套静态方法获取下面三种BASE64编解码器:
- 基本:输出被映射到一组字符A-Za-z0-9+/,编码不添加任何行标,输出的解码仅支持A-Za-z0-9+/。
- URL:输出映射到一组字符A-Za-z0-9+_,输出是URL和文件。
- MIME:输出隐射到MIME友好格式。输出每行不超过76字符,并且使用’\r’并跟随’\n’作为分割。编码输出最后没有行分割。
获取编码器和解码器的方法
static Base64.Decoder getDecoder() 基本型 base64 解码器。
static Base64.Encoder getEncoder() 基本型 base64 编码器。
static Base64.Decoder getMimeDecoder() Mime型 base64 解码器。
static Base64.Encoder getMimeEncoder() Mime型 base64 编码器。
static Base64.Decoder getUrlDecoder() Url型 base64 解码器。
static Base64.Encoder getUrlEncoder() Url型 base64 编码器。
编码和解码的方法:
Encoder编码器: encodeToString(byte[] bys)编码
Decoder解码器: decode(String str) 解码
案例演示
- 基本
public class Test1 {
public static void main(String[] args) {
// 使用基本型的编码器和解码器对数据进行编码和解码:
// 1.获取编码器
Base64.Encoder encoder = Base64.getEncoder();
// 2.对字符串进行编码
String str = "name=中国?password=123456";
String str1 = encoder.encodeToString(str.getBytes());
// 3.打印输出编码后的字符串
System.out.println("编码后的字符串:"+str1);
// 4.获取解码器
Base64.Decoder decoder = Base64.getDecoder();
// 5.对编码后的字符串进行解码
byte[] bys = decoder.decode(str1);
String str2 = new String(bys);
// 6.打印输出解码后的字符串
System.out.println("解码后的字符串:"+str2);
}
}
- URL
public class Test2 {
public static void main(String[] args) {
// 使用URL型的编码器和解码器对数据进行编码和解码:
// 1.获取编码器
Base64.Encoder encoder = Base64.getUrlEncoder();
// 2.对字符串进行编码
String str = "name=中国?password=123456";
String str1 = encoder.encodeToString(str.getBytes());
// 3.打印输出编码后的字符串
System.out.println("编码后的字符串:"+str1);
// 4.获取解码器
Base64.Decoder decoder = Base64.getUrlDecoder();
// 5.对编码后的字符串进行解码
byte[] bys = decoder.decode(str1);
String str2 = new String(bys);
// 6.打印输出解码后的字符串
System.out.println("解码后的字符串:"+str2);
}
}
- MIME
public class Test3 {
public static void main(String[] args) {
// 使用MIME型的编码器和解码器对数据进行编码和解码:
// 1.获取编码器
Base64.Encoder encoder = Base64.getMimeEncoder();
// 2.对字符串进行编码
String str = "";
for (int i = 0; i < 100; i++) {
str += i;
}
System.out.println("编码前的字符串:"+str);
String str1 = encoder.encodeToString(str.getBytes());
// 3.打印输出编码后的字符串
System.out.println("编码后的字符串:"+str1);
// 4.获取解码器
Base64.Decoder decoder = Base64.getMimeDecoder();
// 5.对编码后的字符串进行解码
byte[] bys = decoder.decode(str1);
String str2 = new String(bys);
// 6.打印输出解码后的字符串
System.out.println("解码后的字符串:"+str2);
}
}