diff --git a/docker/adminer/build.sh b/docker/adminer/build.sh
index 6e10de181..5cb800a98 100644
--- a/docker/adminer/build.sh
+++ b/docker/adminer/build.sh
@@ -1,5 +1,5 @@
#/bin/bash
-version=2.3.0
+version=2.3.1
docker build -t orion-visor-adminer:${version} .
docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version}
docker tag orion-visor-adminer:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:latest
diff --git a/docker/mysql/build.sh b/docker/mysql/build.sh
index 0c7db7dac..f5ca4806a 100644
--- a/docker/mysql/build.sh
+++ b/docker/mysql/build.sh
@@ -1,5 +1,5 @@
#/bin/bash
-version=2.3.0
+version=2.3.1
cp -r ../../sql ./sql
docker build -t orion-visor-mysql:${version} .
rm -rf ./sql
diff --git a/docker/push.sh b/docker/push.sh
index bb296787b..625b93326 100644
--- a/docker/push.sh
+++ b/docker/push.sh
@@ -1,5 +1,5 @@
#/bin/bash
-version=2.3.0
+version=2.3.1
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-adminer:${version}
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-mysql:${version}
docker push registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version}
diff --git a/docker/redis/build.sh b/docker/redis/build.sh
index a58ef2549..9ed0c6581 100644
--- a/docker/redis/build.sh
+++ b/docker/redis/build.sh
@@ -1,5 +1,5 @@
#/bin/bash
-version=2.3.0
+version=2.3.1
docker build -t orion-visor-redis:${version} .
docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:${version}
docker tag orion-visor-redis:${version} registry.cn-hangzhou.aliyuncs.com/orionsec/orion-visor-redis:latest
diff --git a/docker/service/build.sh b/docker/service/build.sh
index 6312f1939..0d553c44d 100644
--- a/docker/service/build.sh
+++ b/docker/service/build.sh
@@ -1,5 +1,5 @@
#/bin/bash
-version=2.3.0
+version=2.3.1
mv ../../orion-visor-launch/target/orion-visor-launch.jar ./orion-visor-launch.jar
mv ../../orion-visor-ui/dist ./dist
docker build --no-cache -t orion-visor-service:${version} .
diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java
index 444bd0224..9b6f00426 100644
--- a/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java
+++ b/orion-visor-common/src/main/java/org/dromara/visor/common/constant/AppConst.java
@@ -36,7 +36,7 @@ public interface AppConst extends OrionConst {
/**
* 同 ${orion.version} 迭代时候需要手动更改
*/
- String VERSION = "2.3.0";
+ String VERSION = "2.3.1";
/**
* 同 ${spring.application.name}
diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaEncryptor.java b/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaDecryptor.java
similarity index 86%
rename from orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaEncryptor.java
rename to orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaDecryptor.java
index a0edc757c..a0bec1ae9 100644
--- a/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaEncryptor.java
+++ b/orion-visor-common/src/main/java/org/dromara/visor/common/interfaces/RsaDecryptor.java
@@ -23,21 +23,13 @@
package org.dromara.visor.common.interfaces;
/**
- * rsa 加密器
+ * rsa 解密器
*
* @author Jiahang Li
* @version 1.0.0
* @since 2025/1/5 20:58
*/
-public interface RsaEncryptor {
-
- /**
- * 加密
- *
- * @param value value
- * @return value
- */
- String encrypt(String value);
+public interface RsaDecryptor {
/**
* 解密
diff --git a/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaEncryptUtils.java b/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaParamDecryptUtils.java
similarity index 70%
rename from orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaEncryptUtils.java
rename to orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaParamDecryptUtils.java
index b048b6b24..56b24887e 100644
--- a/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaEncryptUtils.java
+++ b/orion-visor-common/src/main/java/org/dromara/visor/common/utils/RsaParamDecryptUtils.java
@@ -23,30 +23,20 @@
package org.dromara.visor.common.utils;
import cn.orionsec.kit.lang.utils.Exceptions;
-import org.dromara.visor.common.interfaces.RsaEncryptor;
+import org.dromara.visor.common.interfaces.RsaDecryptor;
/**
- * rsa 加密工具类
+ * rsa 参数解密工具类
*
* @author Jiahang Li
* @version 1.0.0
* @since 2025/1/5 21:13
*/
-public class RsaEncryptUtils {
+public class RsaParamDecryptUtils {
- private static RsaEncryptor delegate;
+ private static RsaDecryptor delegate;
- private RsaEncryptUtils() {
- }
-
- /**
- * 加密
- *
- * @param value value
- * @return value
- */
- public static String encrypt(String value) {
- return delegate.encrypt(value);
+ private RsaParamDecryptUtils() {
}
/**
@@ -59,12 +49,12 @@ public static String decrypt(String value) {
return delegate.decrypt(value);
}
- public static void setDelegate(RsaEncryptor delegate) {
- if (RsaEncryptUtils.delegate != null) {
+ public static void setDelegate(RsaDecryptor delegate) {
+ if (RsaParamDecryptUtils.delegate != null) {
// unmodified
throw Exceptions.state();
}
- RsaEncryptUtils.delegate = delegate;
+ RsaParamDecryptUtils.delegate = delegate;
}
}
diff --git a/orion-visor-dependencies/pom.xml b/orion-visor-dependencies/pom.xml
index 92f73f8d0..3cedb2b4c 100644
--- a/orion-visor-dependencies/pom.xml
+++ b/orion-visor-dependencies/pom.xml
@@ -14,7 +14,7 @@
https://github.com/dromara/orion-visor
- 2.3.0
+ 2.3.1
2.7.17
2.7.15
1.5.0
diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java
index 2157a14b8..f6e942be0 100644
--- a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java
+++ b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/configuration/OrionEncryptAutoConfiguration.java
@@ -25,12 +25,12 @@
import org.dromara.visor.common.config.ConfigStore;
import org.dromara.visor.common.constant.AutoConfigureOrderConst;
import org.dromara.visor.common.interfaces.AesEncryptor;
-import org.dromara.visor.common.interfaces.RsaEncryptor;
+import org.dromara.visor.common.interfaces.RsaDecryptor;
import org.dromara.visor.common.utils.AesEncryptUtils;
-import org.dromara.visor.common.utils.RsaEncryptUtils;
+import org.dromara.visor.common.utils.RsaParamDecryptUtils;
import org.dromara.visor.framework.encrypt.configuration.config.AesEncryptConfig;
import org.dromara.visor.framework.encrypt.core.impl.AesEncryptorImpl;
-import org.dromara.visor.framework.encrypt.core.impl.RsaEncryptorImpl;
+import org.dromara.visor.framework.encrypt.core.impl.RsaDecryptorImpl;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
@@ -63,15 +63,15 @@ public AesEncryptor aesEncryptor(AesEncryptConfig config) {
/**
* @param configStore configStore
- * @return rsa 加密器
+ * @return rsa 参数解密器
*/
@Bean
- public RsaEncryptor rsaEncryptor(ConfigStore configStore) {
- // 加密器
- RsaEncryptor encryptor = new RsaEncryptorImpl(configStore);
+ public RsaDecryptor rsaParamDecryptor(ConfigStore configStore) {
+ // 解密器
+ RsaDecryptor decryptor = new RsaDecryptorImpl(configStore);
// 设置工具类
- RsaEncryptUtils.setDelegate(encryptor);
- return encryptor;
+ RsaParamDecryptUtils.setDelegate(decryptor);
+ return decryptor;
}
}
diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaEncryptorImpl.java b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaDecryptorImpl.java
similarity index 72%
rename from orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaEncryptorImpl.java
rename to orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaDecryptorImpl.java
index be53e73a4..1b482252c 100644
--- a/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaEncryptorImpl.java
+++ b/orion-visor-framework/orion-visor-spring-boot-starter-encrypt/src/main/java/org/dromara/visor/framework/encrypt/core/impl/RsaDecryptorImpl.java
@@ -26,10 +26,11 @@
import org.dromara.visor.common.config.ConfigRef;
import org.dromara.visor.common.config.ConfigStore;
import org.dromara.visor.common.constant.ConfigKeys;
-import org.dromara.visor.common.interfaces.RsaEncryptor;
+import org.dromara.visor.common.interfaces.RsaDecryptor;
import java.security.interfaces.RSAPrivateKey;
-import java.security.interfaces.RSAPublicKey;
+import java.util.Arrays;
+import java.util.stream.Collectors;
/**
* rsa 加密器
@@ -38,25 +39,21 @@
* @version 1.0.0
* @since 2025/1/7 11:32
*/
-public class RsaEncryptorImpl implements RsaEncryptor {
+public class RsaDecryptorImpl implements RsaDecryptor {
- private final ConfigRef publicKey;
+ private static final String SPLIT = "\\|";
private final ConfigRef privateKey;
- public RsaEncryptorImpl(ConfigStore configStore) {
- this.publicKey = configStore.ref(ConfigKeys.ENCRYPT_PUBLIC_KEY, RSA::getPublicKey);
+ public RsaDecryptorImpl(ConfigStore configStore) {
this.privateKey = configStore.ref(ConfigKeys.ENCRYPT_PRIVATE_KEY, RSA::getPrivateKey);
}
- @Override
- public String encrypt(String value) {
- return RSA.encrypt(value, publicKey.value);
- }
-
@Override
public String decrypt(String value) {
- return RSA.decrypt(value, privateKey.value);
+ return Arrays.stream(value.split(SPLIT))
+ .map(s -> RSA.decrypt(s, privateKey.value))
+ .collect(Collectors.joining());
}
}
diff --git a/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java b/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java
index 608367a2a..fee715dd2 100644
--- a/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java
+++ b/orion-visor-framework/orion-visor-spring-boot-starter-web/src/main/java/org/dromara/visor/framework/web/core/deserializer/ParamDecryptDeserializer.java
@@ -28,7 +28,7 @@
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import org.dromara.visor.common.constant.ErrorMessage;
-import org.dromara.visor.common.utils.RsaEncryptUtils;
+import org.dromara.visor.common.utils.RsaParamDecryptUtils;
import org.dromara.visor.common.utils.Valid;
import java.io.IOException;
@@ -51,7 +51,7 @@ public String deserialize(JsonParser p, DeserializationContext ctx) throws IOExc
return value;
}
// 解密参数
- String decrypt = RsaEncryptUtils.decrypt(value);
+ String decrypt = RsaParamDecryptUtils.decrypt(value);
return Valid.notNull(decrypt, ErrorMessage.DECRYPT_ERROR);
}
diff --git a/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java b/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java
index 865584349..7ff40dac9 100644
--- a/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java
+++ b/orion-visor-launch/src/test/java/org/dromara/visor/launch/ReplaceVersion.java
@@ -39,9 +39,9 @@
*/
public class ReplaceVersion {
- private static final String TARGET_VERSION = "2.2.3";
+ private static final String TARGET_VERSION = "2.3.0";
- private static final String REPLACE_VERSION = "2.3.0";
+ private static final String REPLACE_VERSION = "2.3.1";
private static final String PATH = new File("").getAbsolutePath();
diff --git a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java
index 0fd5da54d..d20f46d7d 100644
--- a/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java
+++ b/orion-visor-modules/orion-visor-module-asset/orion-visor-module-asset-service/src/main/java/org/dromara/visor/module/asset/handler/host/config/strategy/HostSshConfigStrategy.java
@@ -29,7 +29,7 @@
import org.dromara.visor.common.constant.ErrorMessage;
import org.dromara.visor.common.handler.data.strategy.AbstractGenericsDataStrategy;
import org.dromara.visor.common.utils.AesEncryptUtils;
-import org.dromara.visor.common.utils.RsaEncryptUtils;
+import org.dromara.visor.common.utils.RsaParamDecryptUtils;
import org.dromara.visor.common.utils.Valid;
import org.dromara.visor.module.asset.dao.HostIdentityDAO;
import org.dromara.visor.module.asset.dao.HostKeyDAO;
@@ -134,7 +134,7 @@ private void checkEncryptPassword(HostSshConfigModel before, HostSshConfigModel
// 检查新密码
String newPassword = Valid.notBlank(after.getPassword(), ErrorMessage.PASSWORD_MISSING);
// 解密密码
- newPassword = RsaEncryptUtils.decrypt(newPassword);
+ newPassword = RsaParamDecryptUtils.decrypt(newPassword);
Valid.notBlank(newPassword, ErrorMessage.DECRYPT_ERROR);
// 设置密码
after.setPassword(AesEncryptUtils.encryptAsString(newPassword));
diff --git a/orion-visor-ui/.env.development b/orion-visor-ui/.env.development
index c8ffe522e..1075bb2e6 100644
--- a/orion-visor-ui/.env.development
+++ b/orion-visor-ui/.env.development
@@ -3,4 +3,4 @@ VITE_API_BASE_URL=http://127.0.0.1:9200/orion-visor/api
# websocket 路径
VITE_WS_BASE_URL=ws://127.0.0.1:9200/orion-visor/keep-alive
# 版本号
-VITE_APP_VERSION=2.3.0
+VITE_APP_VERSION=2.3.1
diff --git a/orion-visor-ui/.env.production b/orion-visor-ui/.env.production
index a147a44a5..c0e5d778e 100644
--- a/orion-visor-ui/.env.production
+++ b/orion-visor-ui/.env.production
@@ -3,4 +3,4 @@ VITE_API_BASE_URL=/orion-visor/api
# websocket 路径
VITE_WS_BASE_URL=/orion-visor/keep-alive
# 版本号
-VITE_APP_VERSION=2.3.0
+VITE_APP_VERSION=2.3.1
diff --git a/orion-visor-ui/package.json b/orion-visor-ui/package.json
index 8212c1030..38d22d812 100644
--- a/orion-visor-ui/package.json
+++ b/orion-visor-ui/package.json
@@ -1,7 +1,7 @@
{
"name": "orion-visor-ui",
"description": "Orion Visor UI",
- "version": "2.3.0",
+ "version": "2.3.1",
"private": true,
"author": "Jiahang Li",
"license": "Apache 2.0",
diff --git a/orion-visor-ui/src/utils/rsa.ts b/orion-visor-ui/src/utils/rsa.ts
index 98befd058..b741990fb 100644
--- a/orion-visor-ui/src/utils/rsa.ts
+++ b/orion-visor-ui/src/utils/rsa.ts
@@ -2,6 +2,9 @@ import { JSEncrypt } from 'jsencrypt';
import { useCacheStore } from '@/store';
import { Message } from '@arco-design/web-vue';
+// 分块大小
+const BLOCK_SIZE = 100;
+
// 加密
export const encrypt = async (data: string | undefined): Promise => {
// 为空直接返回
@@ -9,14 +12,32 @@ export const encrypt = async (data: string | undefined): Promise {
+ const encrypted = encryptor.encrypt(chunk);
+ if (encrypted === false) {
+ throw new Error();
+ }
+ return encrypted;
+ });
+ return encryptedChunks.join('|');
+ } catch (error) {
Message.error('数据加密失败');
throw new Error('数据加密失败');
}
- return value;
+};
+
+// 分割字符串
+const splitString = (str: string): string[] => {
+ const chunks: string[] = [];
+ for (let i = 0; i < str.length; i += BLOCK_SIZE) {
+ chunks.push(str.slice(i, i + BLOCK_SIZE));
+ }
+ return chunks;
};
diff --git a/pom.xml b/pom.xml
index 468415062..3b65eba6e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
- 2.3.0
+ 2.3.1
8
8
3.0.0-M5