Base64 是一种编码的方式, 并不是安全领域的加密解密算法。
Base64 的目的是把一些二进制符转成普通字符, 方便在网络上传输。
因为有些系统只能使用ASCII字符,有些二进制字符是控制字符,不能直接传送, 需要转换。
Base64 作用将 非ASCII字符转换为ASCII字符。
怎么转换的,可以参考下面这篇。
Base64 编码介绍
在Java 中, 使用Base64进行编码和解码的方式常见的有三种:
Java 8 中通过java.util.Base64 提供的方法进行Base 64的编码和解码。
@Test
public void jdk8() {
// 编码
String encodedStr = java.util.Base64.getEncoder().encodeToString("123".getBytes());
Assertions.assertEquals(encodedStr, "MTIz");
// 解码
byte[] decodeBytes = java.util.Base64.getDecoder().decode("MTIz");
Assertions.assertEquals(new String(decodeBytes), "123");
}
rt.jar 中用于处理的类是 sun.misc.BASE64Encoder 和sun.misc.BASE64Decoder 。通过创建这两个类的实例后,调用encode() 和 decodeBuffer() 方法。 示例代码如下:
@Test
public void jdk7() throws IOException {
String encodedStr = new sun.misc.BASE64Encoder().encode("123".getBytes());
Assertions.assertEquals(encodedStr, "MTIz");
byte[] decodeBytes = new sun.misc.BASE64Decoder().decodeBuffer("MTIz");
Assertions.assertEquals(new String(decodeBytes), "123");
}
Apache Commons Codec 的官方地址是:
https://commons.apache.org/proper/commons-codec/。
Apache Commons Codec 用来处理Base64的类是 org.apache.commons.codec.binary.Base64。
@Test
public void apacheCodec() {
String encodedStr = org.apache.commons.codec.binary.Base64.encodeBase64String("123".getBytes());
Assertions.assertEquals(encodedStr, "MTIz");
byte[] decodeBytes = org.apache.commons.codec.binary.Base64.decodeBase64("MTIz");
Assertions.assertEquals(new String(decodeBytes), "123");
}