十、MybatisPlus-进阶使用-配置文件加密

115 阅读2分钟

本文是系列文章,目录:
一、MybatisPlus-基本使用
二、MybatisPlus-进阶使用-条件构造器
三、MybatisPlus-进阶使用-自定义sql
四、MybatisPlus-进阶使用-Service接口(1)-基本使用
五、MybatisPlus-进阶使用-Service接口(2)-自定义service
六、MybatisPlus-进阶使用-Service接口(3)- 批量新增
七、MybatisPlus-进阶使用-逻辑删除
八、MybatisPlus-进阶使用-枚举处理器
九、MybatisPlus-进阶使用-JSON类型处理器
十、MybatisPlus-进阶使用-配置文件加密
十一、MybatisPlus-插件功能-分页插件(1)
十二、MybatisPlus-插件功能-分页插件(2)-通用分页封装
十三、MybatisPlus-插件功能-乐观锁插件
十四、MybatisPlus-插件功能-sql性能分析
十五、MybatisPlus-自动填充字段
MybatisPlus-问题汇总

为什么要进行配置文件加密

我们的配置文件中,可能存在很多敏感信息,如果这些信息是明文的话,可能由于开发人员流动导致信息泄露。而MyBatis-Plus 提供了数据安全保护功能。

实现配置文件加密

需求:对数据库用户名密码进行加密

1.生成密钥并进行加密

利用AES工具生成一个随机秘钥

package com.itheima.mp;

import com.baomidou.mybatisplus.core.toolkit.AES;
import org.junit.jupiter.api.Test;

class MpDemoApplicationTests {
    @Test
    void contextLoads() {
        // 生成 16 位随机 AES 密钥
        String randomKey = AES.generateRandomKey();
        System.out.println("randomKey = " + randomKey);

        // 利用密钥对用户名加密
        String username = AES.encrypt("root", randomKey);
        System.out.println("username = " + username);

        // 利用密钥对用户名加密
        String password = AES.encrypt("MySQL123", randomKey);
        System.out.println("password = " + password);
    }
}

2.修改配置

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3307/mp?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: mpw:RvXYKxUEwhGdZVVbF74PQQ== # 密文要以 mpw:开头
    password: mpw:RvXYKxUEwhGdZVVbF74PQQ== # 密文要以 mpw:开头

3.测试

在启动项目的时候,需要把刚才生成的秘钥添加到启动参数中,像这样:

3.1启动参数中添加:

--mpw.key=6234633a66fb399f

3.2idea中添加

image.png

3.3测试类中添加:

单元测试的时候不能添加启动参数,所以要在测试类的注解上配置:

package com.pino.demo;

import com.pino.demo.domain.po.User;
import com.pino.demo.service.IUserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

/**
 * 配置文件加密
 */
@SpringBootTest(args = "--mpw.key=71b8fcd90e5104d1")
public class J_EnumHandle {
    @Autowired
    private IUserService userService;

    @Test
    void testDeleteLogic() {
       List<User> list = userService.list();
       list.forEach(System.out::println);
    }
}