rengb il y a 3 ans
Parent
commit
9568d2cb86

+ 36 - 0
common/src/main/java/com/lantone/common/config/BaseJasyptConfig.java

@@ -0,0 +1,36 @@
+package com.lantone.common.config;
+
+import com.lantone.common.util.StringUtil;
+import org.jasypt.encryption.StringEncryptor;
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Bean;
+
+/**
+ * @Description: Jasypt基础配置
+ * @author: rengb
+ * @time: 2021/1/5 18:27
+ */
+public class BaseJasyptConfig {
+
+    @Value("${jasypt.encryptor.password:#{null}}")
+    private String password;
+
+    @Bean("jasyptStringEncryptor")
+    public StringEncryptor stringEncryptor() {
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+        config.setPassword(StringUtil.isBlank(password) ? "jasypt" : password);
+        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
+        config.setKeyObtentionIterations("1000");
+        config.setPoolSize("1");
+        config.setProviderName("SunJCE");
+        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
+        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+        config.setStringOutputType("base64");
+        encryptor.setConfig(config);
+        return encryptor;
+    }
+
+}

+ 69 - 0
common/src/main/java/com/lantone/common/util/JasyptUtil.java

@@ -0,0 +1,69 @@
+package com.lantone.common.util;
+
+import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
+import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig;
+
+/**
+ * @Description: Jasypt安全框架加解密工具
+ * @author: rengb
+ * @time: 2022/3/21 15:26
+ */
+public class JasyptUtil {
+
+    /**
+     * 解密
+     *
+     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+     * @param value    待解密密文
+     * @return
+     */
+    public static String decyptPwd(String password, String value) {
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        encryptor.setConfig(cryptor(password));
+        String result = encryptor.decrypt(value);
+        return result;
+    }
+
+    /**
+     * 加密
+     *
+     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+     * @param value    待加密值
+     * @return
+     */
+    public static String encyptPwd(String password, String value) {
+        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
+        encryptor.setConfig(cryptor(password));
+        String result = encryptor.encrypt(value);
+        return result;
+    }
+
+    /**
+     * 生成通用配置
+     *
+     * @param password 配置文件中设定的加密密码 jasypt.encryptor.password
+     * @return
+     */
+    public static SimpleStringPBEConfig cryptor(String password) {
+        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
+        config.setPassword(password);
+        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
+        config.setKeyObtentionIterations("1000");
+        config.setPoolSize("1");
+        config.setProviderName("SunJCE");
+        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
+        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
+        config.setStringOutputType("base64");
+        return config;
+    }
+
+    public static void main(String[] args) {
+        // 加密
+        String encPwd = encyptPwd("jasypt", "lantone");
+        // 解密
+        String decPwd = decyptPwd("jasypt", encPwd);
+        System.out.println(encPwd);
+        System.out.println(decPwd);
+    }
+
+}

+ 14 - 0
daqe-center/src/main/java/com/lantone/daqe/config/JasyptConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.daqe.config;
+
+import com.lantone.common.config.BaseJasyptConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: Jasypt相关配置
+ * @author: rengb
+ * @time: 2021/7/21 11:15
+ */
+@Configuration
+public class JasyptConfig extends BaseJasyptConfig {
+
+}

+ 14 - 0
gateway-service/src/main/java/com/lantone/config/JasyptConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.config;
+
+import com.lantone.common.config.BaseJasyptConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: Jasypt相关配置
+ * @author: rengb
+ * @time: 2021/7/21 11:15
+ */
+@Configuration
+public class JasyptConfig extends BaseJasyptConfig {
+
+}

+ 14 - 0
message-service/src/main/java/com/lantone/message/config/JasyptConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.message.config;
+
+import com.lantone.common.config.BaseJasyptConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: Jasypt相关配置
+ * @author: rengb
+ * @time: 2021/7/21 11:15
+ */
+@Configuration
+public class JasyptConfig extends BaseJasyptConfig {
+
+}

+ 6 - 0
pom.xml

@@ -60,6 +60,7 @@
         <spring-data-commons.version>2.3.0.RELEASE</spring-data-commons.version>
         <jackson-databind.version>2.12.3</jackson-databind.version>
         <validation-api.version>2.0.1.Final</validation-api.version>
+        <jasypt-spring-boot-starter.version>3.0.4</jasypt-spring-boot-starter.version>
         <common.version>0.0.1-SNAPSHOT</common.version>
         <bus-interceptor.version>0.0.1-SNAPSHOT</bus-interceptor.version>
         <dblayer-mbg.version>0.0.1-SNAPSHOT</dblayer-mbg.version>
@@ -303,6 +304,11 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-actuator</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.github.ulisesbocchio</groupId>
+            <artifactId>jasypt-spring-boot-starter</artifactId>
+            <version>${jasypt-spring-boot-starter.version}</version>
+        </dependency>
     </dependencies>
 
     <!-- 打包(跳过docker):mvn clean package -DskipDocker -->

+ 14 - 0
report-service/src/main/java/com/lantone/report/config/JasyptConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.report.config;
+
+import com.lantone.common.config.BaseJasyptConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: Jasypt相关配置
+ * @author: rengb
+ * @time: 2021/7/21 11:15
+ */
+@Configuration
+public class JasyptConfig extends BaseJasyptConfig {
+
+}

+ 14 - 0
security-center/src/main/java/com/lantone/security/config/JasyptConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.security.config;
+
+import com.lantone.common.config.BaseJasyptConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: Jasypt相关配置
+ * @author: rengb
+ * @time: 2021/7/21 11:15
+ */
+@Configuration
+public class JasyptConfig extends BaseJasyptConfig {
+
+}

+ 14 - 0
structure-center/src/main/java/com/lantone/structure/config/JasyptConfig.java

@@ -0,0 +1,14 @@
+package com.lantone.structure.config;
+
+import com.lantone.common.config.BaseJasyptConfig;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @Description: Jasypt相关配置
+ * @author: rengb
+ * @time: 2021/7/21 11:15
+ */
+@Configuration
+public class JasyptConfig extends BaseJasyptConfig {
+
+}