//package cn.superdesk.uniorder.common.security.crypt.algorithm;
//
//import cn.superdesk.libs.common.util.ArrayUtils;
//import cn.superdesk.libs.common.util.ByteUtils;
//import org.bouncycastle.jce.provider.BouncyCastleProvider;
//
//import javax.crypto.Cipher;
//import javax.crypto.KeyGenerator;
//import javax.crypto.SecretKey;
//import javax.crypto.spec.SecretKeySpec;
//import java.security.Security;
//
///**
// * @author 乐心 lifesense
// * @description
// * @date 2017年1月14日
// * 参考: https://blog.csdn.net/huangxiaoguo1/article/details/78043098
// */
//public class AES {
//    /**
//     * 生成密钥
//     *
//     * @throws Exception
//     */
//    public static byte[] initKey() throws Exception {
//        //密钥生成器
//        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
//
//        //初始化密钥生成器
//        keyGen.init(256);  //默认128,获得无政策权限后可用192或256
//
//        //生成密钥
//        SecretKey secretKey = keyGen.generateKey();
//        return secretKey.getEncoded();
//    }
//
//    /**
//     * 加密
//     *
//     * @throws Exception
//     */
//    public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
//
//        //不足16字节,补齐内容为差值
//        int len = 16-data.length % 16;
//        for (int i = 0; i < len; i++) {
//            byte[] bytes = { (byte) len };
//            data = ArrayUtils.concat(data, bytes);
//        }
//
//        //恢复密钥
//        SecretKey secretKey = new SecretKeySpec(key, "AES");
//        //Cipher完成加密
//        Cipher cipher = Cipher.getInstance("AES");
//        //根据密钥对cipher进行初始化
//        cipher.init(Cipher.ENCRYPT_MODE, secretKey);
//        //加密
//        byte[] encrypt = cipher.doFinal(data);
//
//        return encrypt;
//    }
//
//    /**
//     * 解密
//     */
//    public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
//
//        data = ArrayUtils.noPadding(data, -1);
//
//        //恢复密钥生成器
//        SecretKey secretKey = new SecretKeySpec(key, "AES");
//
//        //Cipher完成解密
////        Cipher cipher = Cipher.getInstance("AES");
//        Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
//
//        //根据密钥对cipher进行初始化
//        cipher.init(Cipher.DECRYPT_MODE, secretKey);
//        byte[] plain = cipher.doFinal(data);
//
//        int len = 2 + ByteUtils.byteToInt(plain[4]) + 3;
//        return ArrayUtils.noPadding(plain, len);
//
//
////        return plain;
//    }
//
//    /**
//     *  AES-256-ECB解密
//     * @param reqInfoSecret 密文
//     * @param md5key 解密key
//     * @return
//     */
//    public static String decrypt256Ecb(String reqInfoSecret, String md5key) {
//        String result = "";
//        try {
//            Security.addProvider(new BouncyCastleProvider());
//            sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
//            byte[] bt = decoder.decodeBuffer(reqInfoSecret);
//            SecretKey secretKey = new SecretKeySpec(md5key.getBytes(), "AES");
//            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS7Padding", "BC");
//            cipher.init(Cipher.DECRYPT_MODE, secretKey);
//            byte[] resultbt = cipher.doFinal(bt);
//            result = new String(resultbt,"UTF-8");
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return result;
//    }
//}
