java base64編碼 加密和解密(切記注意亂碼問題)

java_lover發表於2015-03-06

 BASE64 編碼是一種常用的字元編碼,在很多地方都會用到。JDK 中提供了非常方便的 BASE64Encoder 和 BASE64Decoder,用它們可以非常方便的完成基於 BASE64 的編碼和解碼。

   切記:下面兩處編碼必須一致。

     獲取位元組流時  res = new sun.misc.BASE64Encoder().encode(s.getBytes("GBK"));

       位元組流轉換字串時:      return new String(b,"GBK");

  完整程式碼如下:

 

package com.util;

import java.io.UnsupportedEncodingException;

import sun.misc.BASE64Decoder;

/**
 * base64 編碼、解碼util
 * 
 * @author lifq
 * @date 2015-3-4 上午09:23:33
 */
public class Base64Util {
    /**
     * 將 s 進行 BASE64 編碼
     *
     * @return String
     * @author lifq
     * @date 2015-3-4 上午09:24:02
     */
    public static String encode(String s) {
        if (s == null)
            return null;
        String res = "";
        try {
            res = new sun.misc.BASE64Encoder().encode(s.getBytes("GBK"));
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return res;
    }

    /**
     * 將 BASE64 編碼的字串 s 進行解碼
     *
     * @return String
     * @author lifq
     * @date 2015-3-4 上午09:24:26
     */
    public static String decode(String s) {
        if (s == null)
            return null;
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            byte[] b = decoder.decodeBuffer(s);
            return new String(b,"GBK");
        } catch (Exception e) {
            return null;
        }
    }
    /**
     * 
     * @return void
     * @author lifq
     * @date 2015-3-4 上午09:23:17
     */
    public static void main(String[] args) {
        System.out.println(Base64Util.encode("哈哈"));
        System.out.println(Base64Util.decode("uf65/g=="));

    }

}

 

限時領取免費Java相關資料,涵蓋了Java、Redis、MongoDB、MySQL、Zookeeper、Spring Cloud、Dubbo/Kafka、Hadoop、Hbase、Flink等高併發分散式、大資料、機器學習等技術。

資料傳送門: https://mp.weixin.qq.com/s/u2b_NVNuMuAPE0w4lc45fw

關注下方公眾號即可免費領取:

Java碎碎念公眾號

相關文章