Base64编码的几种实现方式

*一、JDK1.6(javax.xml包)实现Base64编码解码

import javax.xml.bind.DatatypeConverter;

import org.junit.Test;

public class Jdk6Base64Test {

    /**
     * JDK1.6(javax.xml包)实现Base64编码解码
     */
    @Test
    public void testBase64ByJDK6() throws Exception{
        String sourceData = "这是Base64编码前的原始数据!!!";
        byte[] bytes = sourceData.getBytes();

        // Base64编码
        String base64Encode = DatatypeConverter.printBase64Binary(bytes);
        System.out.println(base64Encode);//6L+Z5pivQmFzZTY057yW56CB5YmN55qE5Y6f5aeL5pWw5o2u77yB77yB77yB

        // Base64解码
        byte[] parseBase64Binary = DatatypeConverter.parseBase64Binary(base64Encode);
        String base64Dncode = new String(parseBase64Binary, "utf-8");
        System.out.println(base64Dncode);//这是Base64编码前的原始数据!!!

    }
}

二、Java 8(java.util包)实现Base64编码解码

import java.util.Base64;//注意:这是jdk8才有的

import org.junit.Test;

public class Jdk8Base64Test {

    /**
     * Java 8(java.util包)实现Base64编码解码
     * @throws Exception 
     */
    @Test
    public void test2() throws Exception{
        String sourceData = "这是Base64编码前的原始数据!!!";
        byte[] bytes = sourceData.getBytes();

        // 编码
        String asB64 = Base64.getEncoder().encodeToString(bytes);
        System.out.println(asB64); //6L+Z5pivQmFzZTY057yW56CB5YmN55qE5Y6f5aeL5pWw5o2u77yB77yB77yB

        // 解码
        byte[] asBytes = Base64.getDecoder().decode(asB64);
        System.out.println(new String(asBytes, "utf-8")); //这是Base64编码前的原始数据!!!

    }
}

三、JDK(sun.misc包)实现Base64编码解码

import java.io.IOException;

import org.junit.Test;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

@SuppressWarnings("restriction")
public class JDKsunBase64 {

    /**
     * JDK(sun.misc包)实现Base64编码解码
     */
    @Test
    public void test() throws IOException{
        String sourceData = "这是Base64编码前的原始数据!!!";
        String encode = new BASE64Encoder().encode(sourceData.getBytes());
        System.out.println("编码结果:" + encode);//6L+Z5pivQmFzZTY057yW56CB5YmN55qE5Y6f5aeL5pWw5o2u77yB77yB77yB
        String decode = new String(new BASE64Decoder().decodeBuffer(encode));
        System.out.println("解码结果:" + decode);
    }
}

四、Apache Commons Codec实现Base64编码解码
1、maven依耐:

<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
</dependency>

2、示例代码:

import org.apache.commons.codec.binary.Base64;
import org.junit.Test;

public class ApacheCommonsCodecBase64Test {

    /**
     * Apache Commons Codec实现Base64编码解码
     */
    @Test
    public void test3() {
        String sourceData = "这是Base64编码前的原始数据!!!";
        System.out.println("原始数据:" + sourceData);

        // 编码
        String encodeString = new String(new Base64().encode(sourceData.getBytes()));
        System.out.println("编码结果:" + encodeString);//6L+Z5pivQmFzZTY057yW56CB5YmN55qE5Y6f5aeL5pWw5o2u77yB77yB77yB

        // 解码
        String decodeString = new String(new Base64().decode(encodeString.getBytes()));
        System.out.println("解码结果:" + decodeString);
    }
}

猜你喜欢

转载自blog.csdn.net/wgq3773/article/details/80973491