java base64编码 加密和解密(切记注意乱码问题)

 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碎碎念公众号

posted @ 2015-03-06 14:03  Java碎碎念  阅读(51679)  评论(0编辑  收藏  举报