刘韬 1 年之前
父節點
當前提交
8b66835175
共有 1 個文件被更改,包括 0 次插入123 次删除
  1. 0 123
      DataFusion/src/com/zskk/tools/AESUtil.java

+ 0 - 123
DataFusion/src/com/zskk/tools/AESUtil.java

@@ -1,123 +0,0 @@
-package com.zskk.tools;
-
-import org.apache.commons.codec.binary.Base64;
-import org.bouncycastle.jce.provider.BouncyCastleProvider;
-import javax.crypto.Cipher;
-import javax.crypto.KeyGenerator;
-import javax.crypto.SecretKey;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
-import java.nio.charset.StandardCharsets;
-import java.security.Provider;
-import java.security.SecureRandom;
-import java.security.Security;
-
-/**
- * AES加密工具类
- *
- * @author ACGkaka
- * @since 2021-06-18 19:11:03
- */
-public class AESUtil {
-	/*
-     * 使用PKCS7Padding填充必须添加一个支持PKCS7Padding的Provider
-     * 类加载的时候就判断是否已经有支持256位的Provider,如果没有则添加进去
-     */
-    static {
-        if (Security.getProvider(BouncyCastleProvider.PROVIDER_NAME) == null) {
-            Security.addProvider(new BouncyCastleProvider());
-        }
-    }
-
-    /**
-     * 加密 128位
-     *
-     * @param content 需要加密的原内容
-     * @param pkey    密匙
-     */
-    public static byte[] aesEncrypt(byte[] content, String pkey,String IV) {
-        try {
-            //SecretKey secretKey = generateKey(pkey);
-            //byte[] enCodeFormat = secretKey.getEncoded();
-            SecretKeySpec skey = new SecretKeySpec(pkey.getBytes(), "AES");
-            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");// "算法/加密/填充"
-            IvParameterSpec iv = new IvParameterSpec(IV.getBytes());
-            cipher.init(Cipher.ENCRYPT_MODE, skey, iv);//初始化加密器
-            return cipher.doFinal(content);
-        } catch (Exception e) {
-            //System.out.println("aesEncrypt() method error:"+e.getLocalizedMessage());
-        }
-        return null;
-    }
-    /**
-     * 获得密钥
-     */
-    private static SecretKey generateKey(String secretKey) throws Exception {
-        //防止linux下 随机生成key
-        Provider p = Security.getProvider("SUN");
-        SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG", p);
-        secureRandom.setSeed(secretKey.getBytes());
-        KeyGenerator kg = KeyGenerator.getInstance("AES");
-        kg.init(secureRandom);
-        // 生成密钥
-        return kg.generateKey();
-    }
-    /**
-     * @param content 加密前原内容
-     * @param pkey    长度为16个字符,128位
-     * @return base64EncodeStr   aes加密完成后内容
-     */
-    public static String aesEncryptStr(String content, String pkey,String IV) {
-        byte[] aesEncrypt = aesEncrypt(content.getBytes(StandardCharsets.UTF_8), pkey,IV);
-        return Base64.encodeBase64String(aesEncrypt);
-    }
-    /**
-     * @param content base64处理过的字符串
-     * @param pkey    密匙
-     * @return 解密 失败将返回NULL
-     */
-    public static String aesDecodeStr(String content, String pkey,String IV) throws Exception {
-        try {
-            byte[] base64DecodeStr = Base64.decodeBase64(content);
-            byte[] aesDecode = aesDecode(base64DecodeStr, pkey,IV);
-            if (aesDecode == null) {
-                return null;
-            }
-            return new String(aesDecode, StandardCharsets.UTF_8);
-        } catch (Exception e) {
-            e.printStackTrace();
-            throw new Exception("解密异常");
-        }
-    }
-    /**
-     * 解密 128位
-     *
-     * @param content 解密前的byte数组
-     * @param pkey    密匙
-     * @return result  解密后的byte数组
-     */
-    public static byte[] aesDecode(byte[] content, String pkey,String IV) throws Exception {
-        //SecretKey secretKey = generateKey(pkey);
-        //byte[] enCodeFormat = secretKey.getEncoded();
-        SecretKeySpec skey = new SecretKeySpec(pkey.getBytes(), "AES");
-        IvParameterSpec iv = new IvParameterSpec(IV.getBytes(StandardCharsets.UTF_8));
-        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");// 创建密码器
-        cipher.init(Cipher.DECRYPT_MODE, skey, iv);// 初始化解密器
-        return cipher.doFinal(content);
-    }
-    public static void main(String[] args) throws Exception {
-        //明文
-        String content = "2019030900000020";
-        //默认向量常量
-        String IV = "1234567890123456";
-        //密匙
-        String pkey = "Pr^dS#&Yp$WpRRr0tmBH8*!ViM*gf4T1";
-        System.out.println("待加密报文:" + content);
-        System.out.println("密匙:" + pkey);
-        String aesEncryptStr = aesEncryptStr(content, pkey,IV);
-        System.out.println("加密报文:" + aesEncryptStr);
-        String aesDecodeStr = aesDecodeStr(aesEncryptStr, pkey,IV);
-        System.out.println("解密报文:" + aesDecodeStr);
-        System.out.println("加解密前后内容是否相等:" + aesDecodeStr.equals(content));
-    }
-}