package cn.api.code;
 
import cn.out.utils.code.Decode;
import cn.out.utils.code.Encode;
import org.apache.commons.codec.binary.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
 
/**
 * base64编码解码API
 *
 * base64变码有如下三种方式
 *     1. 早期的sun.misc包下提供了一种.
 *     2. Apache commons也提供了一种.
 *     3. JDK 1.8 后也出了一种用来实现base64的编解码方式,效率比上面提到的两者更优
 *
 * 下面是对应的实现Api
 */
public class CodeEncodeApi {
 
    public static void main(String[] args) throws Exception {
 
        // last sun.misc(早期的编解码)
        BASE64Encoder base64Encoder = new BASE64Encoder();
        BASE64Decoder base64Decoder = new BASE64Decoder();
        String target = "中文, English, ....";
        byte[] bytes = target.getBytes("UTF-8");
        // 编码
        String encode = base64Encoder.encode(bytes);
        System.out.println(encode);
        // 解码
        byte[] decodeBuffer = base64Decoder.decodeBuffer(encode);
        String str = new String(decodeBuffer, "UTF-8");
        System.out.println(str);
 
        // Apache commons codec(Apache commons下的编解码)
        Base64 base64 = new Base64();
        // 编码
        String encode1 = base64.encodeToString(bytes);
        System.out.println(encode1);
        // 解码
        byte[] decode = base64.decode(encode1);
        String str1 = new String(decode, "UTF-8");
        System.out.println(str1);
 
        // after JDK 1.8(JDK1.8之后的编解码)
        // 编码
        java.util.Base64.Encoder encoder = java.util.Base64.getEncoder();
        String encode2 = encoder.encodeToString(bytes);
        System.out.println(encode2);
        // 解码
        java.util.Base64.Decoder decoder = java.util.Base64.getDecoder();
        byte[] decode1 = decoder.decode(encode2);
        String str2 = new String(decode1, "UTF-8");
        System.out.println(str2);
 
        // 效率上JDK1.8之后的编解码要远远优于以往的编解码方式.建议使用.
 
        System.out.println("-----------------");
 
        // change 
        Encode encode3 = new Encode();
        System.out.println(encode3.encode(target));
        Decode decode3 = new Decode();
        System.out.println(decode3.decode(target));
    }
}
package cn.out.utils.code;

import java.util.Base64;

public class Encode {

    final Base64.Encoder encoder = Base64.getEncoder();

    public String encode(String target) throws Exception {
        byte[] bytes = target.getBytes("UTF-8");
        return encoder.encodeToString(bytes);
    }
}
package cn.out.utils.code;

import java.util.Base64;

public class Decode {

    final Base64.Decoder decoder = Base64.getDecoder();
    public String decode(String target) throws Exception {
        byte[] bytes = target.getBytes("UTF-8");
        byte[] decode = decoder.decode(bytes);
        return new String(decode, "UTF-8");
    }
}

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐