ソースを参照

feat: 数据库密码加密

chenjianhua 5 ヶ月 前
コミット
df7c378cd6

+ 6 - 0
service-base/pom.xml

@@ -263,6 +263,12 @@
             <artifactId>oceanbase-client</artifactId>
             <version>2.4.9</version>
         </dependency>
+        <!--jasypt配置加密-->
+        <dependency>
+            <groupId>com.github.ulisesbocchio</groupId>
+            <artifactId>jasypt-spring-boot-starter</artifactId>
+            <version>2.1.2</version>
+        </dependency>
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-mail</artifactId>

+ 12 - 1
service-base/src/main/java/com/simuwang/base/config/DataSourceConfiguration.java

@@ -1,6 +1,8 @@
 package com.simuwang.base.config;
 
 import com.zaxxer.hikari.HikariDataSource;
+import org.jasypt.util.text.BasicTextEncryptor;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
@@ -12,6 +14,8 @@ public class DataSourceConfiguration {
     public static final String DATA_DAQ_PROPERTIES = "spring.datasource.data-daq";
     public static final String DS_DATA_DAQ = "spring.datasource.data-daq.hikari";
 
+    @Value("${simuwang.token-secret}")
+    private String key;
     @Primary
     @Bean(name = DATA_DAQ_PROPERTIES)
     @ConfigurationProperties(prefix = DATA_DAQ_PROPERTIES)
@@ -23,6 +27,13 @@ public class DataSourceConfiguration {
     @Bean(name = DS_DATA_DAQ)
     @ConfigurationProperties(prefix = DS_DATA_DAQ)
     public HikariDataSource dataTrustDataSource() {
-        return daqDataSourceProperties().initializeDataSourceBuilder().type(HikariDataSource.class).build();
+        //密码解密
+        DataSourceProperties dataSourceProperties = daqDataSourceProperties();
+        String password=dataSourceProperties.getPassword();
+        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
+        textEncryptor.setPassword(key); // 用您自己的密钥替换"yourSecretKey"
+        String decryptPassword = textEncryptor.decrypt(password);
+        dataSourceProperties.setPassword(decryptPassword);
+        return dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
     }
 }

+ 1 - 1
service-deploy/src/main/resources/application.yml

@@ -30,7 +30,7 @@ spring:
       driver-class-name: com.alipay.oceanbase.obproxy.mysql.jdbc.Driver
       url:  jdbc:oceanbase://192.168.1.28:2881/ppw_email?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=true
       username: root
-      password:  Smppw@2024
+      password: yIJ+L+WxdcugkhQEl+oM1t63Rpt+RnQ5
       # hikari连接池配置 对应 HikariConfig 配置属性类
       hikari:
         pool-name: HikariCP-daq

+ 8 - 6
service-deploy/src/test/java/com/simuwang/ApplicationTest.java

@@ -7,6 +7,7 @@ import com.simuwang.base.common.util.DateUtils;
 import com.simuwang.base.pojo.dto.MailboxInfoDTO;
 import com.simuwang.daq.service.EmailParseApiService;
 import com.simuwang.daq.service.EmailParseService;
+import org.jasypt.util.text.BasicTextEncryptor;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -66,12 +67,13 @@ public class ApplicationTest {
 
     @Test
     public void testDateFormat() {
-        ArrayList<String> list = ListUtil.toList("20240705", "2024年07月05日", "2024年7月5日", "2024-07-05", "2024-7-5", "2024/07/05", "2024/7/5", "20240712",
-                "2024年07月12日", "2024年7月12日", "2024-07-12", "2024-7-12", "2024/07/12", "2024/7/12", "20241005", "2024年10月05日", "2024年10月5日", "2024-10-05", "2024-10-5", "2024/10/05", "2024/10/5");
-        for (String dateString : list) {
-            String date = DateUtils.stringToDate(dateString);
-            System.out.println(dateString + ": -> " + date);
-        }
+        String input = "IXO6gLlmQgiuvHZ";
+        BasicTextEncryptor textEncryptor = new BasicTextEncryptor();
+        textEncryptor.setPassword("qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm12"); // 用您自己的密钥替换"yourSecretKey"
+        String encryptedString = textEncryptor.encrypt(input);
+        String decrypt = textEncryptor.decrypt(encryptedString);
+        System.out.println("加密后的字符串为: " + encryptedString);
+        System.out.println("解密后的字符串为: " + decrypt);
     }
 
     private MailboxInfoDTO buildMailbox(String account, String pwd) {