Java实现Base64编码和解码的⽅式
Base64 编码是什么?
Base64 是⼀种编码的⽅式, 并不是安全领域的加密解密算法。
Base64 的⽬的是把⼀些⼆进制符转成普通字符, ⽅便在⽹络上传输。
因为有些系统只能使⽤ASCII字符,有些⼆进制字符是控制字符,不能直接传送, 需要转换。
Base64 作⽤将 ⾮ASCII字符转换为ASCII字符。
怎么转换的,可以参考下⾯这篇。
Java实现Base64编码和解码的⽅式
在Java 中, 使⽤Base64进⾏编码和解码的⽅式常见的有三种:
[推荐] 从Java 8 开始, Base64 就成为Java类库的标准,位于java.util 的包下。对应类是Base64。
Java 7及之前的版本,JDK默认没有⽀持Base64, 需要导⼊JRE ⽬录的lib 下的⽂件 rt.jar, 通过sun.mis
c.BASE64Encoder 和sun.misc.BASE64Decoder 进⾏加解密。(完整的路径%JAVA_HOME%\jre\lib\rt.jar)。 在JDK8中依旧可以使⽤这个⽅法。
Apache Commons Codec, 这是Apache 提供的常见编码器和解码器的实现,包括: Base64、Hex、Phonetic 和 URL。Java 8 内置Base 64 编码器、解码器
Java 8 中通过java.util.Base64 提供的⽅法进⾏Base 64的编码和解码。
这⾥以“123” 的编码为例, 编码后的字符串是 “MTIz”。
@Test
public void jdk8() {
// 编码
String encodedStr = java.Encoder().encodeToString("123".getBytes());
Assertions.assertEquals(encodedStr, "MTIz");
// 解码
byte[] decodeBytes = java.Decoder().decode("MTIz");
Assertions.assertEquals(new String(decodeBytes), "123");
}
Java 7使⽤rt.jar 中的相关类进⾏编码和解码
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 实现Base64 的编码和解码
@Test
public void apacheCodec() {
String encodedStr = dec.deBase64String("123".getBytes()); Assertions.assertEquals(encodedStr, "MTIz");
byte[] decodeBytes = dec.binary.Base64.decodeBase64("MTIz");
Assertions.assertEquals(new String(decodeBytes), "123");
}
>java加密方式有哪些
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论