spring boot 2.1.X 学习之路——整合Druid(加密、解密)

8 篇文章 0 订阅
1 篇文章 0 订阅

pom.xml添加配置

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.18</version>
        </dependency>

application.yml添加配置

具体配置项可以参照官方文档Druid配置

spring:
  application:
    name: system-service
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/yml?serverTimezone=UTC
      username: root
      password: 123456
      initial-size: 5
      min-idle: 10
      max-active: 20
      max-wait: 60000
      time-between-eviction-runs-millis: 2000

数据库加解密

运维和DBA都不希望把密码明文直接写在配置文件中,Druid提供了数据库密码加密的功能。
数据库密码加解密有两种方式,一种是druid自带的加密方式,还有一种是自定义配置时自定义加解密设置。

Druid自带加解密

druid加解密的工具类是ConfigTools类,首先获取Druid的jar包,并cmd至其目录下,比如我们需要加密的密码是123456,执行cmd命令

java -cp druid-1.0.16.jar com.alibaba.druid.filter.config.ConfigTools 123456

会获取到如下数据

privateKey:MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEAl/8EoDUqBF+NAZuM9mTkAuu3vHbfDuu8sF5fGhrEHiqFEyI4HHO86ouCOK2OrfBRkb5VpBLDEw7GmCnj4HworQIDAQABAkBWb5Kc3L7hL8lLMb8u218C/jNFfMAKhyqNjY09lh0THa6UuwmYrk2tGaq007Jcb53DWkBKv/XJleYQDuYhJlmBAiEA4fHuRVI3zJ3Lq3MJmRoYUn7TKGMnVzANdclxYZs23aECIQCsNusbhKGm7fD84nW+VhW7wFGvW+Kv8NrrpDc7vxa3jQIgZs+MSTTROSUwMPKmkmkCWj9lXAJKO20dItSn5+8VtyECIAZX54UV95ZcgVnvRYMDTL2jsd6RteHhL08qt1YeDcopAiA1q6t1ih9glg7qLuHk9hDG2vl4GBn7sRCYyRx8n35YhQ==
publicKey:MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJf/BKA1KgRfjQGbjPZk5ALrt7x23w7rvLBeXxoaxB4qhRMiOBxzvOqLgjitjq3wUZG+VaQSwxMOxpgp4+B8KK0CAwEAAQ==
password:iOrc1JxbtOcXzC9hO8mVsANHbFoDVEs+IsivYpvkVJ48H3XfEWYztk78CFZOxYMQUGLa5yBI5TJsHCllW533LQ==

privateKey :加密私钥
publicKey :加密公钥
password :加密后的密码

然后修改配置文件application.yml

public-key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJf/BKA1KgRfjQGbjPZk5ALrt7x23w7rvLBeXxoaxB4qhRMiOBxzvOqLgjitjq3wUZG+VaQSwxMOxpgp4+B8KK0CAwEAAQ==

spring:
  datasource:
    druid:
      url: jdbc:mysql://localhost:3306/yml?serverTimezone=UTC
      username: root
      password: iOrc1JxbtOcXzC9hO8mVsANHbFoDVEs+IsivYpvkVJ48H3XfEWYztk78CFZOxYMQUGLa5yBI5TJsHCllW533LQ==
      connection-properties: config.decrypt=true;config.decrypt.key=${public-key}
      filter:
        config:
          enabled: true
  1. password修改成加密后的密文
  2. 新增public-key属性(名称可以自定义),值为密文的公钥publicKey
  3. 设置开启加密,并指定公钥,开启configFilter。配置如下(${public-key}要与 第二步中名称一致)
connection-properties: config.decrypt=true;config.decrypt.key=${public-key}
filter:
        config:
          enabled: true

运行:
在这里插入图片描述

自定义加解密规则

自定义加解密规则的方式就是需要自己实例化DataSource

@Configuration
public class BeansConfiguration {

	@Value("${spring.datasource.druid.password})
	private String password;
	

	/**
	* 配置项可以根据实际需要进行配置,此处只配置地址、用户、密码
	* 各配置项的值可以自己随意配置key-value,也可以直接用默认的,获取的时候通过@Value注入进来
	*/
    @Bean("dataSource")
    @Scope(ConfigurableListableBeanFactory.SCOPE_SINGLETON)
    public DataSource getDataSource(){
        System.out.println(name);
        System.out.println("创建数据连接池");
        DruidDataSource dataSource = DruidDataSourceBuilder.create().build();
        dataSource.setUsername("root");
        //在setPassword之前可以对密码进行自定义解密
        dataSource.setPassword(password);
        dataSource.setUrl("jdbc:mysql://localhost:3306/yml?serverTimezone=UTC");
        System.out.println("数据连接池创建成功");
        return dataSource;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值