|
@@ -0,0 +1,76 @@
|
|
|
|
+package com.ruoyi.common.utils.wechat;
|
|
|
|
+
|
|
|
|
+import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
|
|
|
+
|
|
|
|
+import javax.crypto.BadPaddingException;
|
|
|
|
+import javax.crypto.Cipher;
|
|
|
|
+import javax.crypto.IllegalBlockSizeException;
|
|
|
|
+import javax.crypto.NoSuchPaddingException;
|
|
|
|
+import javax.crypto.spec.IvParameterSpec;
|
|
|
|
+import javax.crypto.spec.SecretKeySpec;
|
|
|
|
+import javax.xml.transform.Result;
|
|
|
|
+import java.security.*;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @Author Songzhongjin
|
|
|
|
+ * @Date 2020/7/15 11:46
|
|
|
|
+ * @Version 1.0
|
|
|
|
+ */
|
|
|
|
+public class AESUtils {
|
|
|
|
+
|
|
|
|
+ public static boolean initialized = false;
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * AES解密
|
|
|
|
+ *
|
|
|
|
+ * @param content 密文
|
|
|
|
+ * @return
|
|
|
|
+ * @throws InvalidAlgorithmParameterException
|
|
|
|
+ * @throws NoSuchProviderException
|
|
|
|
+ */
|
|
|
|
+ public byte[] decrypt(byte[] content, byte[] keyByte, byte[] ivByte) throws InvalidAlgorithmParameterException {
|
|
|
|
+ initialize();
|
|
|
|
+ try {
|
|
|
|
+ Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
|
|
|
|
+ Key sKeySpec = new SecretKeySpec(keyByte, "AES");
|
|
|
|
+ cipher.init(Cipher.DECRYPT_MODE, sKeySpec, generateIV(ivByte));// 初始化
|
|
|
|
+ byte[] result = cipher.doFinal(content);
|
|
|
|
+ return result;
|
|
|
|
+ } catch (NoSuchAlgorithmException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (NoSuchPaddingException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (InvalidKeyException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (IllegalBlockSizeException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (BadPaddingException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (NoSuchProviderException e) {
|
|
|
|
+ // TODO Auto-generated catch block
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ // TODO Auto-generated catch block
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ return null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public static void initialize() {
|
|
|
|
+ if (initialized) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+ Security.addProvider(new BouncyCastleProvider());
|
|
|
|
+ initialized = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //生成iv
|
|
|
|
+ public static AlgorithmParameters generateIV(byte[] iv) throws Exception {
|
|
|
|
+ AlgorithmParameters params = AlgorithmParameters.getInstance("AES");
|
|
|
|
+ params.init(new IvParameterSpec(iv));
|
|
|
|
+ return params;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|