Skip to content
章节导航

数据库加密配置

引入依赖

项目 pom 文件依赖如下:

xml
<!-- 数据库加密模块 -->
        <dependency>
            <groupId>com.github.itdachen.framework</groupId>
            <artifactId>fly-datasource</artifactId>
        </dependency>

数据库加密配置分为两种情况:

  • 不加密
  • AES 加密

配置

yaml
fly:
  datasource:
    encoder: AES
  • 若不配置, 则默认不加密 NOOP
  • fly.datasource.encoder 默认两个选项: NOOP(不加密)、AES(AES加密), 超出两个选项之外的配置, 默认不加密
  • 数据库连接加密项: urlusernamepassword

对外加密接口

为了更好的使用, 引用项目可以通过测试类, 实现数据库连接加密, 提供了加密接口: IDataSourceEncrypt 测试代码如下:

@SpringBootTest
public class FlyNextAdminDatasourceTests {
    
    @Autowired
    private IDataSourceEncrypt dataSourceEncrypt;

    @Test
    void dataSourceEncoder() {
        String url = "jdbc:mysql://127.0.0.1:3306/fly-next?useUnicode=true&characterEncoding=UTF8&createDatabaseIfNotExist=true&useUnicode=true&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true";
        String username = "root";
        String password = "root";

        final String encryptUrl = dataSourceEncrypt.encrypt(url);
        final String encryptUsername = dataSourceEncrypt.encrypt(username);
        final String encryptPassword = dataSourceEncrypt.encrypt(password);

        System.err.println("加密后:");
        System.err.println("url: " + encryptUrl);
        System.err.println("username: " + encryptUsername);
        System.err.println("password: " + encryptPassword);
        
    }

}

加密后, 控制台打印示例如下:

url: 0vCwEpK35V/Ecq40QoCgf1IJWnXfMGSWOE+YWOa4E0w/huQlV0pYt8MLzeJw/8loKQY5JqeZXtAZCNawXc1A4FXrAMWUtLf/svyBdr3kLrDCnTYqsP6JiB8HaGi9XjeWHaMwNYufZdxJTso7njs6yGXpgqN7JmqDW0VJ5Q39K+t24bphaIjiuXvUu23sPAK4oP1fDmCgAq27ntc0DpF6JuMmMyZxgmsI7Q/CFEDuTGc8ong29pNTEJEC/U3wFSHWpmeo7Jk6wS31hdMEsIXFPovoI/Bay4M6GbQAHUuGDg7IWBGrTsTmpIX2/Sx/Yl1TC+f3yv8z5AJDWtgQsRzJcA==
username: NlhUCBn05JB+mdAZlpniCA==
password: NlhUCBn05JB+mdAZlpniCA==

替换配置文件中的数据库连接配置, 如下:

yaml
spring:
  datasource:
    name: mysql
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    url: 0vCwEpK35V/Ecq40QoCgf1IJWnXfMGSWOE+YWOa4E0w/huQlV0pYt8MLzeJw/8loKQY5JqeZXtAZCNawXc1A4FXrAMWUtLf/svyBdr3kLrDCnTYqsP6JiB8HaGi9XjeWHaMwNYufZdxJTso7njs6yGXpgqN7JmqDW0VJ5Q39K+t24bphaIjiuXvUu23sPAK4oP1fDmCgAq27ntc0DpF6JuMmMyZxgmsI7Q/CFEDuTGc8ong29pNTEJEC/U3wFSHWpmeo7Jk6wS31hdMEsIXFPovoI/Bay4M6GbQAHUuGDg7IWBGrTsTmpIX2/Sx/Yl1TC+f3yv8z5AJDWtgQsRzJcA==
    username: NlhUCBn05JB+mdAZlpniCA==
    password: NlhUCBn05JB+mdAZlpniCA==