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=="));



    }



}

 

你可能感兴趣的:(base64)