From af08632c37b10c0927cf3fb9c75fac0d3a58b9f1 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 10 七月 2023 18:20:05 +0800
Subject: [PATCH] add 新增 请求加密传输 合并优化 !pr377

---
 /dev/null                                                                                                                             |    1 
 ruoyi-common/ruoyi-common-encrypt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports |    2 
 ruoyi-admin/pom.xml                                                                                                                   |    7 --
 ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/DecryptRequestBodyWrapper.java                      |   31 +++------
 ruoyi-common/ruoyi-common-bom/pom.xml                                                                                                 |    6 --
 ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java                                   |   48 ++++++++++++++++
 ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/properties/ApiDecryptProperties.java                       |    4 
 ruoyi-admin/src/main/resources/application.yml                                                                                        |    6 +-
 ruoyi-common/pom.xml                                                                                                                  |    1 
 ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java                    |   32 ++++++++++
 10 files changed, 98 insertions(+), 40 deletions(-)

diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index 3d121c0..8193359 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -87,13 +87,6 @@
             <artifactId>JustAuth</artifactId>
         </dependency>
 
-        <!-- 鎺ュ彛璇锋眰鍙傛暟鍔犲瘑妯″潡 -->
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-cryptapi</artifactId>
-        </dependency>
-
-
         <!-- skywalking 鏁村悎 logback -->
 <!--        <dependency>-->
 <!--            <groupId>org.apache.skywalking</groupId>-->
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 878a9c3..03ca7ea 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -176,10 +176,10 @@
 # api鎺ュ彛鍔犲瘑
 api-decrypt:
   # 鏄惁寮�鍚叏灞�鎺ュ彛鍔犲瘑
-  enable: false
+  enabled: true
   # AES 鍔犲瘑澶存爣璇�
-  headerFlag: AES
-  # 鍏閽� 闈炲绉扮畻娉曠殑鍏閽� 濡傦細SM2锛孯SA
+  headerFlag: encrypt-key
+  # 鍏閽� 闈炲绉扮畻娉曠殑鍏閽� 濡傦細SM2锛孯SA 浣跨敤鑰呰鑷鏇存崲
   publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==
   privateKey: MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKNPuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gAkM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWowcSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99EcvDQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthhYhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3UP8iWi1Qw0Y=
 
diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml
index e77ea23..45493d3 100644
--- a/ruoyi-common/pom.xml
+++ b/ruoyi-common/pom.xml
@@ -33,7 +33,6 @@
         <module>ruoyi-common-encrypt</module>
         <module>ruoyi-common-tenant</module>
         <module>ruoyi-common-websocket</module>
-        <module>ruoyi-common-cryptapi</module>
     </modules>
 
     <artifactId>ruoyi-common</artifactId>
diff --git a/ruoyi-common/ruoyi-common-bom/pom.xml b/ruoyi-common/ruoyi-common-bom/pom.xml
index 5014954..ef8afda 100644
--- a/ruoyi-common/ruoyi-common-bom/pom.xml
+++ b/ruoyi-common/ruoyi-common-bom/pom.xml
@@ -172,12 +172,6 @@
                 <version>${revision}</version>
             </dependency>
 
-            <!-- 鎺ュ彛璇锋眰鍙傛暟鍔犲瘑妯″潡 -->
-            <dependency>
-                <groupId>org.dromara</groupId>
-                <artifactId>ruoyi-common-cryptapi</artifactId>
-                <version>${revision}</version>
-            </dependency>
         </dependencies>
     </dependencyManagement>
 
diff --git a/ruoyi-common/ruoyi-common-cryptapi/pom.xml b/ruoyi-common/ruoyi-common-cryptapi/pom.xml
deleted file mode 100644
index ee0c577..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/pom.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.dromara</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>ruoyi-common-cryptapi</artifactId>
-
-    <description>
-        ruoyi-common-cryptapi 鎺ュ彛璇锋眰鍙傛暟鍔犲瘑妯″潡
-    </description>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>cn.hutool</groupId>
-            <artifactId>hutool-crypto</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-webmvc</artifactId>
-        </dependency>
-    </dependencies>
-
-</project>
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/annotation/ApiDecrypt.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/annotation/ApiDecrypt.java
deleted file mode 100644
index 2e2bdee..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/annotation/ApiDecrypt.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package org.dromara.cryptapi.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * 褰撴爣鏈夊綋鍓嶆敞瑙g殑鎺ュ彛锛屾帴鍙g┛鍙備负鍔犲瘑瀛楃涓诧紝杩涜瑙e瘑鍚庝负dto瀵硅薄锛� 涓嶅奖鍝嶅悗缁弬鏁版牎楠屻��
- * @author wdhcr
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface ApiDecrypt {
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/config/ApiDecryptConfig.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/config/ApiDecryptConfig.java
deleted file mode 100644
index c74339b..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/config/ApiDecryptConfig.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package org.dromara.cryptapi.config;
-
-import cn.hutool.core.collection.CollectionUtil;
-import jakarta.servlet.DispatcherType;
-import lombok.RequiredArgsConstructor;
-import org.dromara.cryptapi.filter.CryptoFilter;
-import org.dromara.cryptapi.handler.DecryptUrlHandler;
-import org.dromara.cryptapi.properties.ApiDecryptProperties;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.boot.web.servlet.FilterRegistrationBean;
-import org.springframework.context.annotation.Bean;
-
-import java.util.HashMap;
-import java.util.List;
-
-@AutoConfiguration
-@RequiredArgsConstructor
-@EnableConfigurationProperties(ApiDecryptProperties.class)
-public class ApiDecryptConfig {
-
-    private final DecryptUrlHandler decryptUrlHandler;
-
-    private final ApiDecryptProperties apiDecryptProperties;
-
-    @Bean
-    public FilterRegistrationBean<CryptoFilter> cryptoFilterRegistration() {
-        FilterRegistrationBean<CryptoFilter> registration = new FilterRegistrationBean<>();
-        registration.setDispatcherTypes(DispatcherType.REQUEST);
-        registration.setFilter(new CryptoFilter());
-        List<String> urls = decryptUrlHandler.getUrls();
-        if (CollectionUtil.isNotEmpty(urls) || apiDecryptProperties.getEnable()) {
-            registration.setEnabled(true);
-            registration.addUrlPatterns(urls.toArray(new String[0]));
-        } else {
-            registration.setEnabled(false);
-        }
-        registration.setName("cryptoFilter");
-        HashMap<String, String> param = new HashMap<>();
-        param.put(CryptoFilter.CRYPTO_PUBLIC_KEY, apiDecryptProperties.getPublicKey());
-        param.put(CryptoFilter.CRYPTO_PRIVATE_KEY, apiDecryptProperties.getPrivateKey());
-        param.put(CryptoFilter.CRYPTO_HEADER_FLAG, apiDecryptProperties.getHeaderFlag());
-        registration.setInitParameters(param);
-        registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
-        return registration;
-    }
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/AesEncryptor.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/AesEncryptor.java
deleted file mode 100644
index 29b4f4b..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/AesEncryptor.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.dromara.cryptapi.core;
-
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.crypto.SecureUtil;
-import cn.hutool.crypto.symmetric.AES;
-import org.dromara.cryptapi.enums.EncodeType;
-
-import java.nio.charset.StandardCharsets;
-
-/**
- * AES绠楁硶瀹炵幇
- *
- * @author 鑰侀┈
- * @version 4.6.0
- */
-public class AesEncryptor {
-
-    private final AES aes;
-
-    public AesEncryptor(EncryptContext context) {
-        String password = context.getPassword();
-        if (StrUtil.isBlank(password)) {
-            throw new IllegalArgumentException("AES娌℃湁鑾峰緱绉橀挜淇℃伅");
-        }
-        // aes绠楁硶鐨勭閽ヨ姹傛槸16浣嶃��24浣嶃��32浣�
-        int[] array = {16, 24, 32};
-        if (!ArrayUtil.contains(array, password.length())) {
-            throw new IllegalArgumentException("AES绉橀挜闀垮害搴旇涓�16浣嶃��24浣嶃��32浣嶏紝瀹為檯涓�" + password.length() + "浣�");
-        }
-        aes = SecureUtil.aes(context.getPassword().getBytes(StandardCharsets.UTF_8));
-    }
-
-
-    /**
-     * 鍔犲瘑
-     *
-     * @param value      寰呭姞瀵嗗瓧绗︿覆
-     * @param encodeType 鍔犲瘑鍚庣殑缂栫爜鏍煎紡
-     */
-    public String encrypt(String value, EncodeType encodeType) {
-        if (encodeType == EncodeType.HEX) {
-            return aes.encryptHex(value);
-        } else {
-            return aes.encryptBase64(value);
-        }
-    }
-
-    /**
-     * 瑙e瘑
-     *
-     * @param value      寰呭姞瀵嗗瓧绗︿覆
-     */
-    public String decrypt(String value) {
-        return this.aes.decryptStr(value);
-    }
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/EncryptContext.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/EncryptContext.java
deleted file mode 100644
index 76804ad..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/EncryptContext.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.dromara.cryptapi.core;
-
-import lombok.Data;
-import org.dromara.cryptapi.enums.EncodeType;
-
-/**
- * 鍔犲瘑涓婁笅鏂� 鐢ㄤ簬encryptor浼犻�掑繀瑕佺殑鍙傛暟銆�
- *
- * @author 鑰侀┈
- * @version 4.6.0
- */
-@Data
-public class EncryptContext {
-
-    /**
-     * 瀹夊叏绉橀挜
-     */
-    private String password;
-
-    /**
-     * 鍏挜
-     */
-    private String publicKey;
-
-    /**
-     * 绉侀挜
-     */
-    private String privateKey;
-
-    /**
-     * 缂栫爜鏂瑰紡锛宐ase64/hex
-     */
-    private EncodeType encode;
-
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/RsaEncryptor.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/RsaEncryptor.java
deleted file mode 100644
index 9f8806d..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/core/RsaEncryptor.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package org.dromara.cryptapi.core;
-
-import cn.hutool.core.codec.Base64;
-import cn.hutool.crypto.SecureUtil;
-import cn.hutool.crypto.asymmetric.KeyType;
-import cn.hutool.crypto.asymmetric.RSA;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.cryptapi.enums.EncodeType;
-
-
-/**
- * RSA绠楁硶瀹炵幇
- *
- * @author 鑰侀┈
- * @version 4.6.0
- */
-public class RsaEncryptor {
-
-    private final RSA rsa;
-
-    public RsaEncryptor(EncryptContext context) {
-        String privateKey = context.getPrivateKey();
-        String publicKey = context.getPublicKey();
-        if (StringUtils.isAnyEmpty(privateKey, publicKey)) {
-            throw new IllegalArgumentException("RSA鍏閽ュ潎闇�瑕佹彁渚涳紝鍏挜鍔犲瘑锛岀閽ヨВ瀵嗐��");
-        }
-        this.rsa = SecureUtil.rsa(Base64.decode(privateKey), Base64.decode(publicKey));
-    }
-
-    /**
-     * 鍔犲瘑
-     *
-     * @param value      寰呭姞瀵嗗瓧绗︿覆
-     * @param encodeType 鍔犲瘑鍚庣殑缂栫爜鏍煎紡
-     */
-    public String encrypt(String value, EncodeType encodeType) {
-        if (encodeType == EncodeType.HEX) {
-            return rsa.encryptHex(value, KeyType.PublicKey);
-        } else {
-            return rsa.encryptBase64(value, KeyType.PublicKey);
-        }
-    }
-
-    /**
-     * 瑙e瘑
-     *
-     * @param value      寰呭姞瀵嗗瓧绗︿覆
-     */
-    public String decrypt(String value) {
-        return this.rsa.decryptStr(value, KeyType.PrivateKey);
-    }
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/enums/EncodeType.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/enums/EncodeType.java
deleted file mode 100644
index 7ee356a..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/enums/EncodeType.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package org.dromara.cryptapi.enums;
-
-public enum EncodeType {
-    /**
-     * base64缂栫爜
-     */
-    BASE64,
-
-    /**
-     * 16杩涘埗缂栫爜
-     */
-    HEX
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/filter/CryptoFilter.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/filter/CryptoFilter.java
deleted file mode 100644
index b96e74d..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/filter/CryptoFilter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.dromara.cryptapi.filter;
-
-import jakarta.servlet.*;
-import jakarta.servlet.http.HttpServletRequest;
-import lombok.SneakyThrows;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.cryptapi.core.EncryptContext;
-import org.dromara.cryptapi.core.RsaEncryptor;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-
-import java.util.Objects;
-
-
-/**
- * Crypto 杩囨护鍣�
- *
- * @author wdhcr
- */
-public class CryptoFilter implements Filter {
-
-    public static final String CRYPTO_PUBLIC_KEY = "publicKey";
-    public static final String CRYPTO_PRIVATE_KEY = "privateKey";
-    public static final String CRYPTO_HEADER_FLAG = "headerFlag";
-    private RsaEncryptor rsaEncryptor;
-    private String headerFlag;
-
-
-    @Override
-    public void init(FilterConfig filterConfig) {
-        EncryptContext encryptContext = new EncryptContext();
-        encryptContext.setPublicKey(filterConfig.getInitParameter(CryptoFilter.CRYPTO_PUBLIC_KEY));
-        encryptContext.setPrivateKey(filterConfig.getInitParameter(CryptoFilter.CRYPTO_PRIVATE_KEY));
-        headerFlag = filterConfig.getInitParameter(CryptoFilter.CRYPTO_HEADER_FLAG);
-        rsaEncryptor = new RsaEncryptor(encryptContext);
-    }
-
-    @SneakyThrows
-    @Override
-    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) {
-        ServletRequest requestWrapper = null;
-        HttpServletRequest httpServletRequest = (HttpServletRequest) request;
-        if (StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)
-            && (HttpMethod.PUT.matches(httpServletRequest.getMethod()) || HttpMethod.POST.matches(httpServletRequest.getMethod()))) {
-            requestWrapper = new DecryptRequestBodyWrapper(httpServletRequest, rsaEncryptor, headerFlag);
-        }
-        chain.doFilter(Objects.requireNonNullElse(requestWrapper, request), response);
-    }
-
-    @Override
-    public void destroy() {
-
-    }
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/handler/DecryptUrlHandler.java b/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/handler/DecryptUrlHandler.java
deleted file mode 100644
index cf01ea7..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/handler/DecryptUrlHandler.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package org.dromara.cryptapi.handler;
-
-import cn.hutool.core.collection.CollectionUtil;
-import cn.hutool.core.util.ReUtil;
-import lombok.Data;
-import lombok.RequiredArgsConstructor;
-import org.dromara.cryptapi.annotation.ApiDecrypt;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.method.HandlerMethod;
-import org.springframework.web.servlet.mvc.condition.PathPatternsRequestCondition;
-import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
-import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
-
-import java.util.*;
-import java.util.regex.Pattern;
-
-/**
- * 鑾峰彇闇�瑕佽В瀵嗙殑Url閰嶇疆
- *
- * @author wdhcr
- */
-@Data
-@Component
-@RequiredArgsConstructor
-public class DecryptUrlHandler implements InitializingBean {
-
-    private static final Pattern PATTERN = Pattern.compile("\\{(.*?)}");
-
-    private List<String> urls = new ArrayList<>();
-
-    private final RequestMappingHandlerMapping requestMappingHandlerMapping;
-
-    @Override
-    public void afterPropertiesSet() {
-        Set<String> set = new HashSet<>();
-        Map<RequestMappingInfo, HandlerMethod> map = requestMappingHandlerMapping.getHandlerMethods();
-        List<RequestMappingInfo> requestMappingInfos = map.entrySet().stream().filter(item -> {
-            HandlerMethod method = item.getValue();
-            ApiDecrypt decrypt = method.getMethodAnnotation(ApiDecrypt.class);
-            // 鏍囨湁瑙e瘑娉ㄨВ鐨勫苟涓旀槸post 鎴栬�卲ut 璇锋眰鐨刪andler
-            return decrypt != null && CollectionUtil.containsAny(item.getKey().getMethodsCondition().getMethods(), Arrays.asList(RequestMethod.PUT, RequestMethod.POST));
-        }).map(Map.Entry::getKey).toList();
-        requestMappingInfos.forEach(info -> {
-            // 鑾峰彇娉ㄨВ涓婅竟鐨� path 鏇夸唬 path variable 涓� *
-            Optional.ofNullable(info.getPathPatternsCondition())
-                .map(PathPatternsRequestCondition::getPatterns)
-                .orElseGet(HashSet::new)
-                .forEach(url -> set.add(ReUtil.replaceAll(url.getPatternString(), PATTERN, "*")));
-        });
-        urls.addAll(set);
-    }
-
-}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-cryptapi/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 533d4be..0000000
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-org.dromara.cryptapi.config.ApiDecryptConfig
diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java
new file mode 100644
index 0000000..098f6bc
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/config/ApiDecryptAutoConfiguration.java
@@ -0,0 +1,32 @@
+package org.dromara.common.encrypt.config;
+
+import jakarta.servlet.DispatcherType;
+import org.dromara.common.encrypt.filter.CryptoFilter;
+import org.dromara.common.encrypt.properties.ApiDecryptProperties;
+import org.springframework.boot.autoconfigure.AutoConfiguration;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * api 瑙e瘑鑷姩閰嶇疆
+ *
+ * @author wdhcr
+ */
+@AutoConfiguration
+@EnableConfigurationProperties(ApiDecryptProperties.class)
+@ConditionalOnProperty(value = "api-decrypt.enabled", havingValue = "true")
+public class ApiDecryptAutoConfiguration {
+
+    @Bean
+    public FilterRegistrationBean<CryptoFilter> cryptoFilterRegistration(ApiDecryptProperties properties) {
+        FilterRegistrationBean<CryptoFilter> registration = new FilterRegistrationBean<>();
+        registration.setDispatcherTypes(DispatcherType.REQUEST);
+        registration.setFilter(new CryptoFilter(properties));
+        registration.addUrlPatterns("/*");
+        registration.setName("cryptoFilter");
+        registration.setOrder(FilterRegistrationBean.HIGHEST_PRECEDENCE);
+        return registration;
+    }
+}
diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java
new file mode 100644
index 0000000..6d039bb
--- /dev/null
+++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/CryptoFilter.java
@@ -0,0 +1,48 @@
+package org.dromara.common.encrypt.filter;
+
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
+import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.encrypt.properties.ApiDecryptProperties;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+
+import java.io.IOException;
+import java.util.Objects;
+
+
+/**
+ * Crypto 杩囨护鍣�
+ *
+ * @author wdhcr
+ */
+public class CryptoFilter implements Filter {
+    private final ApiDecryptProperties properties;
+
+    public CryptoFilter(ApiDecryptProperties properties) {
+        this.properties = properties;
+    }
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+        ServletRequest requestWrapper = null;
+        HttpServletRequest servletRequest = (HttpServletRequest) request;
+        // 鏄惁涓� json 璇锋眰
+        if (StringUtils.startsWithIgnoreCase(request.getContentType(), MediaType.APPLICATION_JSON_VALUE)) {
+            // 鏄惁涓� put 鎴栬�� post 璇锋眰
+            if (HttpMethod.PUT.matches(servletRequest.getMethod()) || HttpMethod.POST.matches(servletRequest.getMethod())) {
+                // 鏄惁瀛樺湪鍔犲瘑鏍囧ご
+                String headerValue = servletRequest.getHeader(properties.getHeaderFlag());
+                if (StringUtils.isNotBlank(headerValue)) {
+                    requestWrapper = new DecryptRequestBodyWrapper(servletRequest, properties.getPublicKey(), properties.getPrivateKey(), properties.getHeaderFlag());
+                }
+            }
+        }
+        chain.doFilter(Objects.requireNonNullElse(requestWrapper, request), response);
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+}
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/filter/DecryptRequestBodyWrapper.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/DecryptRequestBodyWrapper.java
similarity index 65%
rename from ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/filter/DecryptRequestBodyWrapper.java
rename to ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/DecryptRequestBodyWrapper.java
index 8d014c8..fa9a310 100644
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/filter/DecryptRequestBodyWrapper.java
+++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/filter/DecryptRequestBodyWrapper.java
@@ -1,18 +1,12 @@
-package org.dromara.cryptapi.filter;
+package org.dromara.common.encrypt.filter;
 
-import cn.hutool.core.codec.Base64;
 import cn.hutool.core.io.IoUtil;
 import jakarta.servlet.ReadListener;
 import jakarta.servlet.ServletInputStream;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletRequestWrapper;
 import org.dromara.common.core.constant.Constants;
-import org.dromara.common.core.exception.base.BaseException;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.cryptapi.core.AesEncryptor;
-import org.dromara.cryptapi.core.EncryptContext;
-import org.dromara.cryptapi.core.RsaEncryptor;
-import org.dromara.cryptapi.enums.EncodeType;
+import org.dromara.common.encrypt.utils.EncryptUtils;
 import org.springframework.http.MediaType;
 
 import java.io.BufferedReader;
@@ -30,21 +24,18 @@
 
     private final byte[] body;
 
-    public DecryptRequestBodyWrapper(HttpServletRequest request, RsaEncryptor rsaEncryptor, String headerFlag) throws IOException {
+    public DecryptRequestBodyWrapper(HttpServletRequest request, String publicKey, String privateKey, String headerFlag) throws IOException {
         super(request);
-        String requestRsa = request.getHeader(headerFlag);
-        if (StringUtils.isEmpty(requestRsa)) {
-            throw new BaseException("鍔犲瘑AES鐨勫姩鎬佸瘑鐮佷笉鑳戒负绌�");
-        }
-        String decryptAes = new String(Base64.decode(rsaEncryptor.decrypt(requestRsa)));
+        // 鑾峰彇 AES 瀵嗙爜 閲囩敤 RSA 鍔犲瘑
+        String headerRsa = request.getHeader(headerFlag);
+        String decryptAes = EncryptUtils.decryptByRsa(headerRsa, privateKey);
+        // 瑙e瘑 AES 瀵嗙爜
+        String aesPassword = EncryptUtils.decryptByBase64(decryptAes);
         request.setCharacterEncoding(Constants.UTF8);
         byte[] readBytes = IoUtil.readBytes(request.getInputStream(), false);
-        String requestBody = StringUtils.toEncodedString(readBytes, StandardCharsets.UTF_8);
-        EncryptContext encryptContext = new EncryptContext();
-        encryptContext.setPassword(decryptAes);
-        encryptContext.setEncode(EncodeType.BASE64);
-        AesEncryptor aesEncryptor = new AesEncryptor(encryptContext);
-        String decryptBody = aesEncryptor.decrypt(requestBody);
+        String requestBody = new String(readBytes, StandardCharsets.UTF_8);
+        // 瑙e瘑 body 閲囩敤 AES 鍔犲瘑
+        String decryptBody = EncryptUtils.decryptByAes(requestBody, aesPassword);
         body = decryptBody.getBytes(StandardCharsets.UTF_8);
     }
 
diff --git a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/properties/ApiDecryptProperties.java b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/properties/ApiDecryptProperties.java
similarity index 85%
rename from ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/properties/ApiDecryptProperties.java
rename to ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/properties/ApiDecryptProperties.java
index f7dc6b0..9e25b7b 100644
--- a/ruoyi-common/ruoyi-common-cryptapi/src/main/java/org/dromara/cryptapi/properties/ApiDecryptProperties.java
+++ b/ruoyi-common/ruoyi-common-encrypt/src/main/java/org/dromara/common/encrypt/properties/ApiDecryptProperties.java
@@ -1,4 +1,4 @@
-package org.dromara.cryptapi.properties;
+package org.dromara.common.encrypt.properties;
 
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -14,7 +14,7 @@
     /**
      * 鍔犲瘑寮�鍏�
      */
-    private Boolean enable;
+    private Boolean enabled;
 
     /**
      * 澶撮儴鏍囪瘑
diff --git a/ruoyi-common/ruoyi-common-encrypt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/ruoyi-common/ruoyi-common-encrypt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
index fe37589..132cf29 100644
--- a/ruoyi-common/ruoyi-common-encrypt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ b/ruoyi-common/ruoyi-common-encrypt/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -1 +1,3 @@
 org.dromara.common.encrypt.config.EncryptorAutoConfiguration
+org.dromara.common.encrypt.config.ApiDecryptAutoConfiguration
+

--
Gitblit v1.9.3