public class Base64Demo {
// 请注意,在处理二进制数据时(例如图片或文件),不需要将字节数组转换为字符串再进行编码或解码,
// 可以直接对字节数组进行Base64操作。上述示例中的字符串是为了简化演示而使用的。
public static void main(String[] args) {
// 编码
enCode();
// 解码
deCode();
}
private static void enCode() {
// 待编码的字符串
String originalString = "Hello, World!";
// 使用默认的Base64.Encoder进行编码
byte[] encodedBytes = Base64.getEncoder().encode(originalString.getBytes(StandardCharsets.UTF_8));
// 输出编码后的Base64字符串
System.out.println("Base64 Encoded String: " + new String(encodedBytes, StandardCharsets.UTF_8));
}
private static void deCode() {
// 已经编码的Base64字符串
String encodedString = "SGVsbG8sIFdvcmxkIQ==";
// 将Base64字符串转换成字节数组
byte[] encodedBytes = encodedString.getBytes(StandardCharsets.UTF_8);
// 使用Base64.Decoder进行解码
byte[] decodedBytes = Base64.getDecoder().decode(encodedBytes);
// 将解码后的字节数组转换回字符串
String originalString = new String(decodedBytes, StandardCharsets.UTF_8);
// 输出解码后的原始字符串
System.out.println("Decoded Original String: " + originalString);
}
}
Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法(并不是encode后的文本字符大小是64个)
将 byte数组编码为字符串的方法,而且编码出的字符串只包含ASCII基础字符。
例如字符串ShuSheng007对应的Base64为U2h1U2hlbmcwMDc=。其中那个=比较特殊,是填充符,不属于64个字符中在编码后的Base64文本后加上一个或两个 = 号,代表补足的字节数。
值得注意的是Base64不是加密算法,其仅仅是一种编码方式,算法也是公开的,所以不能依赖它进行加密。
下图是Base64码表,可以看到从0到63的每个数字都对应一个上面的一个字符。
因为Base64的64个字符和= 以及它表示的二进制在哪都通用
有时你会发现web页面传给你的base64字符串前面有类似下面的东东。
data:image/jpeg;base64, /9j/4AA…
这是DataURI,大部分浏览器支持直接打开这类二进制数据,但是我们要格外注意,
如果你只是想要真实的Base64内容就需要取,后边的内容