package com.fjs.scenic.cyt.utils;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.apache.commons.net.util.Base64;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * Base64转换工具类
 *
 * @author
 */
public class Base64Util {

    /**
     * 将 s进行 BASE64 编码
     *
     * @param s
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String getBASE64(String s) {
        if (s == null) {
            return null;
        }
        return new BASE64Encoder().encode(s.getBytes());
    }

    /**
     * 将 BASE64 编码的字符串 s进行解码
     *
     * @param s
     * @return
     */
    public static String getFromBASE64(String s) {
        if (s == null) {
            return null;
        }
        BASE64Decoder decoder = new BASE64Decoder();
        try {
            byte[] b = decoder.decodeBuffer(s);
            return new String(b);
        } catch (Exception e) {
            return null;
        }
    }

    /**
     * 加密基础交互数据
     * @param jsonStr json数据
     * @return 加密后的BASE64数据
     */
    public static String encodeData(String jsonStr){
        try {
            return Base64.encodeBase64URLSafeString(jsonStr.getBytes("UTF-8"));
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 解密交互数据
     * @param enryptData 加密的BASE 64数据
     * @return 解密后的json字符串
     */
    public static String decodeData(String enryptData) throws Exception{

        byte[] bytes = Base64.decodeBase64(enryptData.getBytes());
        return new String(bytes,"UTF-8");
    }


    public static String encodeToString(byte[] byteArray) {
        return new BASE64Encoder().encode(byteArray);
    }

    public static byte[] decode(String planString) {
        try {
            return new BASE64Decoder().decodeBuffer(planString);
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }
}
