From d5ebac1efe04615795c939fa6d6032b233bc4e79 Mon Sep 17 00:00:00 2001
From: 田源 <lastanimals@163.com>
Date: 星期四, 18 七月 2024 17:34:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java |   40 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java
index 5daa93e..929ee15 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/DigestUtil.java
@@ -1,14 +1,18 @@
 package com.vci.web.util;
 
+import com.vci.corba.common.PLException;
+import com.vci.starter.web.exception.VciBaseException;
+import org.apache.commons.codec.binary.Hex;
 import org.springframework.lang.Nullable;
 import org.springframework.util.DigestUtils;
 
-import javax.crypto.Mac;
-import javax.crypto.SecretKey;
+import javax.crypto.*;
+import javax.crypto.spec.IvParameterSpec;
 import javax.crypto.spec.SecretKeySpec;
-import java.security.InvalidKeyException;
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
+import java.security.*;
+import java.security.spec.InvalidKeySpecException;
+import java.security.spec.PKCS8EncodedKeySpec;
+import java.util.Base64;
 
 /**
  * 鍔犲瘑鐩稿叧宸ュ叿绫荤洿鎺ヤ娇鐢⊿pring util灏佽锛屽噺灏慾ar渚濊禆
@@ -327,6 +331,32 @@
     }
 
     /**
+     * aes瑙e瘑
+     * @param secretKey 绉橀挜
+     * @param encryptedData     Data
+     * @return digest as a hex string
+     */
+    public static String decryptAes(String encryptedData, String secretKey) throws Exception {
+        // AES 瀵嗛挜闀垮害闇�瑕佹槸 128, 192, 鎴� 256 浣嶏紙16, 24, 鎴� 32 瀛楄妭锛�
+        byte[] keyBytes = secretKey.getBytes("UTF-8");
+        SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
+
+        // 鍒濆鍖栧悜閲� IV 涔熼渶瑕佹槸 128 浣嶏紙16 瀛楄妭锛�
+        byte[] ivBytes = secretKey.substring(0, 16).getBytes("UTF-8");
+        IvParameterSpec iv = new IvParameterSpec(ivBytes);
+
+        // 瑙e瘑
+        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
+        cipher.init(Cipher.DECRYPT_MODE, key, iv);
+
+        // 瑙e瘑鐨勬暟鎹渶瑕佹槸 Base64 缂栫爜鐨勶紝鍥犱负 JavaScript 鐨� CryptoJS 榛樿杩斿洖 Base64 缂栫爜鐨勫瓧绗︿覆
+        byte[] decodedValue = Base64.getDecoder().decode(encryptedData);
+        byte[] decryptedBytes = cipher.doFinal(decodedValue);
+
+        return new String(decryptedBytes, "UTF-8");
+    }
+
+    /**
      * digest HMac
      *
      * @param algorithm 绠楁硶

--
Gitblit v1.9.3