package cn.ljs.util;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Base64;
import java.util.Base64.Decoder;
import java.util.Base64.Encoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Miracle Luna
 * @version 1.0
 * @date 2019/7/3 18:55
 */
public class Base64Util {
    public static void main(String[] args) throws UnsupportedEncodingException {
        String sotcbb = "sotcbb_";//自定义盐值
        Map<String, Object> map = new HashMap<String, Object>();
        map.put("id", "1");
        map.put("name", "地铁");
        Map<String, Object> map1 = new HashMap<String, Object>();
        map1.put("id", "2");
        map1.put("name", "公交车");
        List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
        list.add(map);
        list.add(map1);
        for (int i = 0; i < list.size(); i++) {
            map = list.get(i);
            String aString = null;
            try {
                aString = Base64Util.encoder(sotcbb+(String) map.get("name"));
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("编码:"+aString);
            map.put("name", aString);
        }
        System.out.println("编码:"+list);
        
        for (int i = 0; i < list.size(); i++) {
            map = list.get(i);
            String aString = null;
            try {
                aString = Base64Util.decoder((String) map.get("name"));
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println("解码:"+aString.split("_")[1]);
            map.put("name", aString.split("_")[1]);
        }
        System.out.println("解码:"+list);
        
        String string = "李某";
        String eString = "5p2O5p+Q";
        System.out.println(string+"<---编码--->"+Base64Util.encoder(string));
        System.out.println(eString+"<---解码--->"+Base64Util.decoder(eString));
    }

    /**
     * base64编码
     * @param string
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String encoder(String string) throws UnsupportedEncodingException {
        Encoder encoder = Base64.getEncoder();
        byte[] textByte = string.getBytes("UTF-8");
        return encoder.encodeToString(textByte);
    }
    
    /**
     * base64解码
     * @param string
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String decoder(String string) throws UnsupportedEncodingException {
        Decoder decoder = Base64.getDecoder();
        return new String(decoder.decode(string), "UTF-8");
    }
}