• Java:Base64 编码


    环境

    1. jdk 8 或者 6

    示例

    jdk 6

    package jiangbo.java.lang;
    
    import java.io.IOException;
    import java.nio.charset.Charset;
    
    import javax.xml.bind.DatatypeConverter;
    
    import sun.misc.BASE64Decoder;
    import sun.misc.BASE64Encoder;
    
    public class Base64Demo {
    
        public static void main(String[] args) throws IOException {
    
            String name = "jiangbo";
            Charset utf8 = Charset.forName("UTF-8");
    
            BASE64Encoder base64Encoder = new sun.misc.BASE64Encoder();
    
            String BASE64EncoderString = base64Encoder.encode(name.getBytes(utf8));
            System.out.println(BASE64EncoderString);
    
            BASE64Decoder base64Decoder = new sun.misc.BASE64Decoder();
            byte[] decodeBuffer = base64Decoder.decodeBuffer(BASE64EncoderString);
            System.out.println(new String(decodeBuffer, utf8));
    
            String base64String = DatatypeConverter.printBase64Binary(name.getBytes(utf8));
            System.out.println(base64String);
    
            byte[] base64Binary = DatatypeConverter.parseBase64Binary(base64String);
            System.out.println(new String(base64Binary, utf8));
        }
    }
    

    jdk 8

    package jiangbo.java.lang;
    
    import java.io.IOException;
    import java.nio.charset.StandardCharsets;
    import java.util.Base64;
    
    public class Base64Demo {
    
        public static void main(String[] args) throws IOException {
    
            String name = "Base64 编码";
            String string = Base64.getEncoder().encodeToString(name.getBytes(StandardCharsets.UTF_8));
            System.out.println(string);
    
            byte[] bytes = Base64.getDecoder().decode(string);
            System.out.println(new String(bytes, StandardCharsets.UTF_8));
    
            // url safe:不会出现 + /
            string = Base64.getUrlEncoder().encodeToString(name.getBytes(StandardCharsets.UTF_8));
            System.out.println(string);
    
            bytes = Base64.getUrlDecoder().decode(string);
            System.out.println(new String(bytes, StandardCharsets.UTF_8));
    
        }
    }
    

    commons-codec

    加入依赖

    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.14</version>
    </dependency>
    
    package jiangbo.java.lang;
    
    import java.io.IOException;
    import java.nio.charset.StandardCharsets;
    import java.util.Base64;
    
    public class Base64Demo {
    
        public static void main(String[] args) throws IOException {
    
            string = org.apache.commons.codec.binary.Base64.encodeBase64String(name.getBytes(StandardCharsets.UTF_8));
            System.out.println(string);
    
            bytes = org.apache.commons.codec.binary.Base64.decodeBase64(string);
            System.out.println(new String(bytes, StandardCharsets.UTF_8));
    
            // url safe:不会出现 + /
            string = org.apache.commons.codec.binary.Base64
                    .encodeBase64URLSafeString(name.getBytes(StandardCharsets.UTF_8));
            System.out.println(string);
    
            bytes = org.apache.commons.codec.binary.Base64.decodeBase64(string);
            System.out.println(new String(bytes, StandardCharsets.UTF_8));
        }
    }
    

    工具类

    package jiangbo.java.lang;
    
    import java.nio.charset.StandardCharsets;
    import java.util.Base64;
    
    public final class Base64Utils {
    
        private Base64Utils() {
        }
    
        public static final byte[] encode(byte[] bytes) {
    
            return Base64.getEncoder().encode(bytes);
        }
    
        public static final byte[] encodeString(String str) {
    
            return encode(str.getBytes(StandardCharsets.UTF_8));
        }
    
        public static final String encodeToString(byte[] bytes) {
    
            return new String(encode(bytes), StandardCharsets.UTF_8);
        }
    
        public static final String encodeStringToString(String str) {
    
            return encodeToString(str.getBytes(StandardCharsets.UTF_8));
        }
    
        public static final byte[] decode(byte[] bytes) {
    
            return Base64.getDecoder().decode(bytes);
        }
    
        public static final byte[] decodeString(String str) {
    
            return decode(str.getBytes(StandardCharsets.UTF_8));
        }
    
        public static final String decodeToString(byte[] bytes) {
    
            return new String(decode(bytes), StandardCharsets.UTF_8);
        }
    
        public static final String decodeStringToString(String str) {
    
            return decodeToString(str.getBytes(StandardCharsets.UTF_8));
        }
    
        public static final String encodeUrlSafeString(String str) {
    
            return Base64.getUrlEncoder().encodeToString(str.getBytes(StandardCharsets.UTF_8));
        }
    
        public static final String decodeUrlSafeString(String str) {
    
            return new String(Base64.getUrlDecoder().decode(str), StandardCharsets.UTF_8);
        }
    }
    
  • 相关阅读:
    C++中派生类与基类的同名成员调用机制
    一元运算符重载
    二元运算符重载
    const修饰符在不同位置带来的效应
    C++中指针与引用的区别
    基本的查找算法
    排序算法
    指针是怎么回事
    面试总结(1)
    价值观作业
  • 原文地址:https://www.cnblogs.com/jiangbo44/p/12808207.html
Copyright © 2020-2023  润新知