diff --git a/zdxt-common/zdxt-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java b/zdxt-common/zdxt-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
index ff0fbc81..6e749783 100644
--- a/zdxt-common/zdxt-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
+++ b/zdxt-common/zdxt-common-encrypt/src/main/java/org/dromara/common/encrypt/utils/EncryptUtils.java
@@ -8,8 +8,10 @@ import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.RSA;
import cn.hutool.crypto.asymmetric.SM2;
+import org.dromara.common.encrypt.config.jasypt.JasyptUtils;
import java.nio.charset.StandardCharsets;
+import java.security.KeyPair;
import java.util.HashMap;
import java.util.Map;
@@ -310,4 +312,37 @@ public class EncryptUtils {
return SmUtil.sm3(data);
}
+
+ public static void main(String[] args) {
+ KeyPair keyPair = SecureUtil.generateKeyPair("RSA");
+
+ byte[] publicKeyBytes = keyPair.getPublic().getEncoded();
+ byte[] privateKeyBytes = keyPair.getPrivate().getEncoded();
+
+ String publicKeyBase64 = Base64.encode(publicKeyBytes);
+ String privateKeyBase64 = Base64.encode(privateKeyBytes);
+
+// System.out.println("========== RSA 2048-bit 密钥对 ==========");
+// System.out.println();
+// System.out.println("【前端 env 公钥】(VITE_APP_RSA_PUBLIC_KEY)");
+// System.out.println(publicKeyBase64);
+// System.out.println();
+// System.out.println("【后端 yml 私钥】(需 Jasypt 加密后填入)");
+// System.out.println(privateKeyBase64);
+// System.out.println();
+//
+// RSA rsa = new RSA(privateKeyBase64, publicKeyBase64);
+// String testPlain = "szsf@zfjd";
+// String encrypted = rsa.encryptBase64(testPlain, StandardCharsets.UTF_8, KeyType.PublicKey);
+// String decrypted = rsa.decryptStr(encrypted, KeyType.PrivateKey, StandardCharsets.UTF_8);
+//
+// System.out.println("========== 验证 ==========");
+// System.out.println("原文: " + testPlain);
+// System.out.println("加密: " + encrypted);
+// System.out.println("解密: " + decrypted);
+// System.out.println("验证: " + testPlain.equals(decrypted));
+//
+// String JasyptUtilsencrypted = JasyptUtils.encryptWithMD5("MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALTSYWlcbT0MU4vQel54se6HpgYBri9AmisfzFXPh+282CRt5eyXbFnA1IBbmxxzlnkEUUWhnLbzTSLd+DjN52u5jaCiIbhqWDuFpEdO7gV9gk7L6j43/9SDKccH+ID7C/ycSEopGy5U/AP2k0rHb+fNc7oqNkQkKy9UlfnfD6lDAgMBAAECgYAd3qrsxrHc5c5fSD8OoA10g7/vOhPWBmvxN71/Z1ri8NEbo3PZ02G4qdvwoDFNT+LJduceA4ZpymMxoU1BxPG3WMXoWZQMSECEwi6ivg9q4HBr1mhhPPqgF5pDgGb8aW/3znOIlIV5WsZsb4pHd6NH38A7iv6IuKccWdstjtqCsQJBANq5GTDVVACe4DXAcvI+GtaRNM3izRJueYx6Kzhl22v2vMiGH8WcwgaEIlXg9G/6SrVnLh/hpTY/iEuTGaiBnTUCQQDTo6X1hZLNBYXP+ahEnGjVrzcO6GDklvU609tPcW1pVXHOeikQKUwwNKYJ6GrSW5ECewqdviOznI3ODBynTROXAkEAugGr8KGbPKPgXRX7KxOx00PNukHk0IXvDI5g7yeAQQKmbYnSv0Weo9f/MzWJ6yjaHAdRbH+C9u10xYCl023W+QJAYjaGVIrZFjWi5GG6GaTv7YHzLgLevBXl1ZftJU/A82nId4YvOiXACnrUNrLZp6cAg0MwKQXMsZRMJjturKDTHwJBAMDOLEBcnP2a0UVYXSwG3o3uVTBpLo1CvgN32aSF0xX7C+MuHTirDJStOLmNBGb+7TOINsnNHFVveXdhnDwrBTE=", "ATPfOhpnAVp6yBas7RU");
+// System.out.println("ENC(" + JasyptUtilsencrypted + ")");
+ }
}
diff --git a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/LoginController.java b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/LoginController.java
index 518693f2..c37de1fd 100644
--- a/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/LoginController.java
+++ b/zdxt-modules/zdxt-enforcement-code/src/main/java/com/zdxt/enforcementcode/controller/app/LoginController.java
@@ -7,11 +7,10 @@ import com.zdxt.enforcementcode.common.commonenum.PlatformTypeEnums;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
+import org.dromara.common.encrypt.utils.EncryptUtils;
import org.dromara.common.satoken.utils.LoginHelper;
+import org.springframework.beans.factory.annotation.Autowired;
-import javax.crypto.Cipher;
-import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
import java.util.Map;
@@ -39,6 +38,9 @@ public abstract class LoginController {
*/
protected static final long APP_TOKEN_ACTIVE_TIMEOUT = 86400;
+ @Autowired
+ private com.zdxt.enforcementcode.common.config.RuoYiConfig ruoYiConfig;
+
/**
* 校验登录参数非空
*
@@ -61,7 +63,7 @@ public abstract class LoginController {
*/
protected String decryptPassword(String secretKey) {
try {
- return decryptByAes(secretKey);
+ return decryptByRsa(secretKey);
} catch (Exception e) {
log.error("密码解密失败", e);
return null;
@@ -109,27 +111,11 @@ public abstract class LoginController {
}
/**
- * AES/CBC/ZeroPadding 解密(与前端CryptoJS对应)
- * 前端使用 CryptoJS.pad.ZeroPadding,Java中用NoPadding后手动去除尾部0字节
+ * RSA 私钥解密前端传来的密码
+ * 前端使用 RSA 公钥加密,后端使用私钥解密
*/
- private String decryptByAes(String encryptedBase64) throws Exception {
- byte[] keyBytes = AES_KEY.getBytes(StandardCharsets.UTF_8);
- byte[] ivBytes = AES_KEY.getBytes(StandardCharsets.UTF_8);
-
- SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
- IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes);
-
- Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
- cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
-
- byte[] encrypted = Base64.getDecoder().decode(encryptedBase64);
- byte[] decrypted = cipher.doFinal(encrypted);
-
- // 去除ZeroPadding尾部的0字节
- int len = decrypted.length;
- while (len > 0 && decrypted[len - 1] == 0) {
- len--;
- }
- return new String(decrypted, 0, len, StandardCharsets.UTF_8);
+ private String decryptByRsa(String encryptedBase64) throws Exception {
+ String privateKey = ruoYiConfig.getPrivateKey();
+ return EncryptUtils.decryptByRsa(encryptedBase64, privateKey);
}
}
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/.env.development b/zdxt-web-client/zdxt-admin-plus-ui/.env.development
index 4778c907..c468df7a 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/.env.development
+++ b/zdxt-web-client/zdxt-admin-plus-ui/.env.development
@@ -25,9 +25,9 @@ VITE_APP_PORT = 12004
# 接口加密功能开关(如需关闭 后端也必须对应关闭)
VITE_APP_ENCRYPT = true
# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
# 接口响应解密 RSA 私钥与后端加密公钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PRIVATE_KEY = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE='
+VITE_APP_RSA_PRIVATE_KEY = '替换为与新公钥配对的私钥'
# 客户端id
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust b/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust
index 5d47cfdf..949f8e03 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust
+++ b/zdxt-web-client/zdxt-admin-plus-ui/.env.development-wmy-cust
@@ -27,9 +27,9 @@ VITE_APP_PORT = 12004
# 接口加密功能开关(如需关闭 后端也必须对应关闭)
VITE_APP_ENCRYPT = true
# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
# 接口响应解密 RSA 私钥与后端加密公钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PRIVATE_KEY = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE='
+VITE_APP_RSA_PRIVATE_KEY = '替换为与新公钥配对的私钥'
# 客户端id
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/.env.development-zrb-cust b/zdxt-web-client/zdxt-admin-plus-ui/.env.development-zrb-cust
index 906411e7..3ef899ff 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/.env.development-zrb-cust
+++ b/zdxt-web-client/zdxt-admin-plus-ui/.env.development-zrb-cust
@@ -23,9 +23,9 @@ VITE_APP_PORT = 12004
# 接口加密功能开关(如需关闭 后端也必须对应关闭)
VITE_APP_ENCRYPT = true
# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
# 接口响应解密 RSA 私钥与后端加密公钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PRIVATE_KEY = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE='
+VITE_APP_RSA_PRIVATE_KEY = '替换为与新公钥配对的私钥'
# 客户端id
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
diff --git a/zdxt-web-client/zdxt-admin-plus-ui/.env.production b/zdxt-web-client/zdxt-admin-plus-ui/.env.production
index 7147f2f5..d8cbd27b 100644
--- a/zdxt-web-client/zdxt-admin-plus-ui/.env.production
+++ b/zdxt-web-client/zdxt-admin-plus-ui/.env.production
@@ -27,9 +27,9 @@ VITE_APP_PORT = 80
# 接口加密功能开关(如需关闭 后端也必须对应关闭)
VITE_APP_ENCRYPT = true
# 接口加密传输 RSA 公钥与后端解密私钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PUBLIC_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ=='
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
# 接口响应解密 RSA 私钥与后端加密公钥对应 如更换需前后端一同更换
-VITE_APP_RSA_PRIVATE_KEY = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE='
+VITE_APP_RSA_PRIVATE_KEY = '替换为与新公钥配对的私钥'
# 客户端id
VITE_APP_CLIENT_ID = 'e5cd7e4891bf95d1d19206ce24a7b32e'
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue
index 39639376..c5fae3c7 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/login.vue
@@ -41,7 +41,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue
index a5afa4ac..06c24a76 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByPassword.vue
@@ -63,7 +63,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByV1System.vue b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByV1System.vue
index 3626bd19..0786a180 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByV1System.vue
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/src/views/enforcement/loginByV1System.vue
@@ -63,7 +63,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev
index 2e22e4c0..149b482b 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev
@@ -8,3 +8,4 @@ VITE_PROXY_TARGET = 'http://localhost:8080'
VITE_CONTEXT_PATH = '/efcode20-enf-app/'
VITE_DEFAULT_LOGIN = '/enforcement/login'
VITE_APP_ENV = 'dev'
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-wmy b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-wmy
index 7cca0901..ee0ced7e 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-wmy
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-wmy
@@ -10,3 +10,4 @@ VITE_PROXY_TARGET = 'http://172.16.21.213:8080'
VITE_DEFAULT_LOGIN = '/enforcement/loginByPassword'
VITE_APP_ENV = 'dev'
VITE_FILE_URL = ''
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-zrb b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-zrb
index e09ed6f3..e0dbe2de 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-zrb
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-dev-zrb
@@ -6,3 +6,4 @@ VITE_PROXY_TARGET = 'http://localhost:17000'
VITE_DEFAULT_LOGIN = '/enforcement/loginByPassword'
VITE_APP_ENV = 'dev'
VITE_FILE_URL = ''
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-prod b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-prod
index 34a2376c..af183a9e 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-prod
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-prod
@@ -6,3 +6,4 @@ VITE_CONTEXT_PATH = '/efcode20-enf-app/'
VITE_DEFAULT_LOGIN = '/enforcement/loginByPassword'
VITE_APP_ENV = 'prod'
VITE_FILE_URL = ''
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-test b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-test
index b9890aee..bd27f6e0 100644
--- a/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-test
+++ b/zdxt-web-client/zdxt-efcode-enforcement-app/vite-env/.env.enforcement-test
@@ -6,3 +6,4 @@ VITE_PROXY_TARGET = 'http://139.186.148.21:8080'
VITE_CONTEXT_PATH = '/efcode20-enf-app/'
VITE_DEFAULT_LOGIN = '/enforcement/login'
VITE_APP_ENV = 'dev'
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/login.vue b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/login.vue
index d87558f0..5d1ed0ae 100644
--- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/login.vue
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/login.vue
@@ -39,7 +39,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/loginByPassword.vue b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/loginByPassword.vue
index 458f4820..ecda183e 100644
--- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/loginByPassword.vue
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/auth/loginByPassword.vue
@@ -38,7 +38,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/login.vue b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/login.vue
index dcc5a8f2..489cf00f 100644
--- a/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/login.vue
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/src/views/enterprise/nos/login.vue
@@ -39,7 +39,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev
index 8f9c483a..17e99639 100644
--- a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev
@@ -8,3 +8,4 @@ VITE_FILE_URL = 'http://139.186.148.21:8080'
VITE_CONTEXT_PATH = '/efcode20-ent-app/'
VITE_DEFAULT_LOGIN = '/enterprise/enterpriseHome'
VITE_APP_ENV = 'dev'
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-wmy b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-wmy
index 8607253f..5da3c454 100644
--- a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-wmy
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-wmy
@@ -8,3 +8,4 @@ VITE_CONTEXT_PATH = '/efcode20-ent-app/'
VITE_DEFAULT_LOGIN = '/enterprise/loginByPassword'
VITE_FILE_URL = ''
VITE_APP_ENV = 'dev'
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-zrb b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-zrb
index 3da59f75..405a372b 100644
--- a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-zrb
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-dev-zrb
@@ -6,3 +6,4 @@ VITE_CONTEXT_PATH = '/efcode20-ent-app/'
VITE_DEFAULT_LOGIN = '/enterprise/loginByPassword'
VITE_FILE_URL = ''
VITE_APP_ENV = 'dev'
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-prod b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-prod
index 45ef9c0a..b1950570 100644
--- a/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-prod
+++ b/zdxt-web-client/zdxt-efcode-enterprise-app/vite-env/.env.enterprise-prod
@@ -6,3 +6,4 @@ VITE_CONTEXT_PATH = '/efcode20-ent-app/'
VITE_DEFAULT_LOGIN = '/enterprise/loginByPassword'
VITE_APP_ENV = 'prod'
VITE_FILE_URL = ''
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-supervision-app/src/views/supervision/login.vue b/zdxt-web-client/zdxt-efcode-supervision-app/src/views/supervision/login.vue
index a20fda91..9c9fbcd7 100644
--- a/zdxt-web-client/zdxt-efcode-supervision-app/src/views/supervision/login.vue
+++ b/zdxt-web-client/zdxt-efcode-supervision-app/src/views/supervision/login.vue
@@ -38,7 +38,7 @@
diff --git a/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-dev b/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-dev
index 498c8dc6..19db5412 100644
--- a/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-dev
+++ b/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-dev
@@ -3,3 +3,4 @@ VITE_PORT = 12002
VITE_BASE_URL = '/api/sup-ep'
VITE_DEFAULT_LOGIN = '/supervision/login'
VITE_APP_ENV = 'dev'
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-prod b/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-prod
index 13aafe80..51a104ca 100644
--- a/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-prod
+++ b/zdxt-web-client/zdxt-efcode-supervision-app/vite-env/.env.supervision-prod
@@ -3,3 +3,4 @@ VITE_PORT = 12002
VITE_BASE_URL = '/api/sup-ep'
VITE_DEFAULT_LOGIN = '/supervision/login'
VITE_APP_ENV = 'prod'
+VITE_APP_RSA_PUBLIC_KEY = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB'
diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml
index 674a2f27..00aeb869 100644
--- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml
+++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-dev.yml
@@ -7,7 +7,11 @@ zdxt:
url-prefix: /profile
qr_code_url: /usr/local/uploads/zfjd_logo.png
demo_enabled: false
-
+ # 登录使用的公私钥
+ public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB
+ private-key: ENC(q/G0Iy/bTMpmx7MUmBo/Vr8J1lOXdh9aspSxPt+hAE7YrFmqGUUims4f3eJPMk/Ppc3Np+FcqISI82w2enkvImCfYo+FEYkuNNq2jpE7qMnti4yGAVhnuhrNrtNja2g3GJZ71SfoTsT9jQTLGh92wSSvqxl6OaOfb0hZB4P4cWHpEyH54UcXOaSX+Qa/IfouY60RwWJM61AQwZuyJ91U98ad7diiCso82AnBvMDQueSDM86C/lmvtiwKCKb4dfB5MRkSykFKANT0Mixu8qIr49CIpkusFfPdzbPyC3jgVyLZ5LnK1/6aDXCxj5Yulwic20EyFiAksKpMt+tF/pSAgy0QznvG4TpMH9XbsTqEmFfQWEHj7DkxCPf8u/1sl8xi3qcCKOeBX5w3t+/Ybhoje8fRPjJKTmooaU2gjxZHo3ozbUT1mX3VVfYUc6b6OjhwPUz88LhY9jEUVVUYzYVh9ENA/Ynp61ELArT+91ccqoHitSJBw/BMgBxcOD3+8v3SC1dpH/gtE5a4VuQetz/gWuLYHBdYaZZ9uzMZHySHYo1q2XmG2sTSG/A/U/KgatdOWwaV5DaSw74YOpelQjb2CUoqurVoQOMW1VZt/L3x1NDeZTUyNWsaNGyteW2beGTGf3BvTZeGG+/QJhGbX4CxigGpL+nFaCGOf8nwG21LaYHKtyQrC1o3YUApkMqZqSbWCB2FiR4sBE5bf3jJxJn9BK0Noa/Zp6anemSfoOgCB0igBBIfJqi52WMW4yChqslcByxFCYnayf02uM/l2jhfN3XEKS3uc1F+AkhoNleNBepFsJTviVYb2n/anWZZPRPGvbkBNV8NznCFSzdMx+bAql3noDcaTG8TV4eGWTaNFGS+ap+iCG/CdlhbrjR0RknxPSjkWAnzz2FE/a/n89aOVBYcU8LlGuRGT2ppf/wWrlFADWk7SfnpWyJyZdQT+iGZSaUCwQ2hVRYL43Fet6IBrDuqzb6oZEhONx4h2qEhhLEcerIuHAeU4COTUN6dqqxsc3a/5IPzAoyIg2Y6Rem7x2Hp9l2/xJtK1IPOayLX/XTPK4OIBzC/IMq3/nA+CtjJTXpuhceRkw6CbqVYV//JOQyGO9Bloyf+7FOdmuU6UMMTxiEgHROMW26nlETmr6+m)
+# private-key: MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALTSYWlcbT0MU4vQel54se6HpgYBri9AmisfzFXPh+282CRt5eyXbFnA1IBbmxxzlnkEUUWhnLbzTSLd+DjN52u5jaCiIbhqWDuFpEdO7gV9gk7L6j43/9SDKccH+ID7C/ycSEopGy5U/AP2k0rHb+fNc7oqNkQkKy9UlfnfD6lDAgMBAAECgYAd3qrsxrHc5c5fSD8OoA10g7/vOhPWBmvxN71/Z1ri8NEbo3PZ02G4qdvwoDFNT+LJduceA4ZpymMxoU1BxPG3WMXoWZQMSECEwi6ivg9q4HBr1mhhPPqgF5pDgGb8aW/3znOIlIV5WsZsb4pHd6NH38A7iv6IuKccWdstjtqCsQJBANq5GTDVVACe4DXAcvI+GtaRNM3izRJueYx6Kzhl22v2vMiGH8WcwgaEIlXg9G/6SrVnLh/hpTY/iEuTGaiBnTUCQQDTo6X1hZLNBYXP+ahEnGjVrzcO6GDklvU609tPcW1pVXHOeikQKUwwNKYJ6GrSW5ECewqdviOznI3ODBynTROXAkEAugGr8KGbPKPgXRX7KxOx00PNukHk0IXvDI5g7yeAQQKmbYnSv0Weo9f/MzWJ6yjaHAdRbH+C9u10xYCl023W+QJAYjaGVIrZFjWi5GG6GaTv7YHzLgLevBXl1ZftJU/A82nId4YvOiXACnrUNrLZp6cAg0MwKQXMsZRMJjturKDTHwJBAMDOLEBcnP2a0UVYXSwG3o3uVTBpLo1CvgN32aSF0xX7C+MuHTirDJStOLmNBGb+7TOINsnNHFVveXdhnDwrBTE=
+# private-key: ENC(Jasypt加密后的私钥Base64)
--- # 监控中心配置
spring.boot.admin.client:
# 增加客户端开关
diff --git a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml
index 1002b60f..6da9feff 100644
--- a/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml
+++ b/zdxt-web-server/zdxt-admin-web-server/src/main/resources/application-prod.yml
@@ -6,6 +6,8 @@ zdxt:
# upload-path: /Users/vincent/uploadPath
url-prefix: /profile
demo_enabled: false
+ public-key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC00mFpXG09DFOL0HpeeLHuh6YGAa4vQJorH8xVz4ftvNgkbeXsl2xZwNSAW5scc5Z5BFFFoZy2800i3fg4zedruY2goiG4alg7haRHTu4FfYJOy+o+N//UgynHB/iA+wv8nEhKKRsuVPwD9pNKx2/nzXO6KjZEJCsvVJX53w+pQwIDAQAB
+ private-key: ENC(q/G0Iy/bTMpmx7MUmBo/Vr8J1lOXdh9aspSxPt+hAE7YrFmqGUUims4f3eJPMk/Ppc3Np+FcqISI82w2enkvImCfYo+FEYkuNNq2jpE7qMnti4yGAVhnuhrNrtNja2g3GJZ71SfoTsT9jQTLGh92wSSvqxl6OaOfb0hZB4P4cWHpEyH54UcXOaSX+Qa/IfouY60RwWJM61AQwZuyJ91U98ad7diiCso82AnBvMDQueSDM86C/lmvtiwKCKb4dfB5MRkSykFKANT0Mixu8qIr49CIpkusFfPdzbPyC3jgVyLZ5LnK1/6aDXCxj5Yulwic20EyFiAksKpMt+tF/pSAgy0QznvG4TpMH9XbsTqEmFfQWEHj7DkxCPf8u/1sl8xi3qcCKOeBX5w3t+/Ybhoje8fRPjJKTmooaU2gjxZHo3ozbUT1mX3VVfYUc6b6OjhwPUz88LhY9jEUVVUYzYVh9ENA/Ynp61ELArT+91ccqoHitSJBw/BMgBxcOD3+8v3SC1dpH/gtE5a4VuQetz/gWuLYHBdYaZZ9uzMZHySHYo1q2XmG2sTSG/A/U/KgatdOWwaV5DaSw74YOpelQjb2CUoqurVoQOMW1VZt/L3x1NDeZTUyNWsaNGyteW2beGTGf3BvTZeGG+/QJhGbX4CxigGpL+nFaCGOf8nwG21LaYHKtyQrC1o3YUApkMqZqSbWCB2FiR4sBE5bf3jJxJn9BK0Noa/Zp6anemSfoOgCB0igBBIfJqi52WMW4yChqslcByxFCYnayf02uM/l2jhfN3XEKS3uc1F+AkhoNleNBepFsJTviVYb2n/anWZZPRPGvbkBNV8NznCFSzdMx+bAql3noDcaTG8TV4eGWTaNFGS+ap+iCG/CdlhbrjR0RknxPSjkWAnzz2FE/a/n89aOVBYcU8LlGuRGT2ppf/wWrlFADWk7SfnpWyJyZdQT+iGZSaUCwQ2hVRYL43Fet6IBrDuqzb6oZEhONx4h2qEhhLEcerIuHAeU4COTUN6dqqxsc3a/5IPzAoyIg2Y6Rem7x2Hp9l2/xJtK1IPOayLX/XTPK4OIBzC/IMq3/nA+CtjJTXpuhceRkw6CbqVYV//JOQyGO9Bloyf+7FOdmuU6UMMTxiEgHROMW26nlETmr6+m)
--- # snail-job 配置
snail-job: