纯配置方式使用durid的数据库密码加密

主要是使用durid中的ConfigFilter实现,官方文档可参考这里,但是官方文档里没有介绍纯配置方式的用法,我自己试了下,总结了纯配置的用法。

第一步:生成密码和密钥

这一步可以使用官方文档里的办法,不想敲命令也可以使用一个我自己写的类(需要引入官方jar包),当然本质都是调用官方jar包中的方法:

        <!-- 引入官方jar包,笔者本篇基于1.1.9-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.9</version>
        </dependency>
package com.example.encryption;

import com.alibaba.druid.filter.config.ConfigTools;

public class Password {
    public static void main(String[] args) throws Exception {
        String password = "mypassword";
        String[] arr = ConfigTools.genKeyPair(512);
        System.out.println("privateKey:" + arr[0]);
        System.out.println("publicKey:" + arr[1]);
        System.out.println("password:" + ConfigTools.encrypt(arr[0], password));
    }
}

将mypassword改成你的密码就可以了,输出如下:
输出示例

第二步:配置,这里我直接给一个例子,再细说

spring:
  datasource:
    druid:
      filters: config
      connectionProperties: "config.decrypt=true;config.decrypt.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJytZ2OPWf2cpYSlZCGB9CvvG71FumkVC1RveYW2H2PTeCdAPinHlSHJBVnE9eQbQlW/GupIOVK+kY+arlhnJZsCAwEAAQ=="
      url: jdbc:mysql://localhost:3306/my_test_db?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
      username: root
      password: SUEikVmE5+S9BvYdvhUPGqPBBiX/qkyPx10/lpTwzlS6j44/eSt7a5ipYXd38h0GSlp+uSOoCsP5kKAvrjUfuw==
      driver-class-name: com.mysql.cj.jdbc.Driver
  • 配置名为config的filters
  • 配置connectionProperties属性,key的内容修改为上一步输出的公钥
  • 修改密码为加密后的密码

ps:

  • 如果已经配置其他filter,直接使用’,'后面跟上config就行
filters: stat,config
  • connectionProperties属性直接以一个字符串给出,没有使用yml格式,因为“config.decrypt”既作为属性,又作为节点,感觉不是规范的yml写法。如果要写成yml,笔者怎么写都不对,有大佬知道也可以指教一下,以下是我试过的两个不行的写法
connectionProperties:
        config:
          decrypt: true
          decrypt.key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJytZ2OPWf2cpYSlZCGB9CvvG71FumkVC1RveYW2H2PTeCdAPinHlSHJBVnE9eQbQlW/GupIOVK+kY+arlhnJZsCAwEAAQ==
  connectionProperties:
    config:
      decrypt: true
        key: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJytZ2OPWf2cpYSlZCGB9CvvG71FumkVC1RveYW2H2PTeCdAPinHlSHJBVnE9eQbQlW/GupIOVK+kY+arlhnJZsCAwEAAQ==

更新:单纯这样配置之后是保证不了安全的,com.alibaba.druid.filter.config.ConfigFilter最终还是会用解密后的明文密码去访问数据库,所以拿到公钥和加密后的密码,再使用ConfigFilter中的解密方法很容易就可以解出明文密码,这只能算是一个障眼法。想办法把公钥和密文密码放在不同的地方,才能说增强了安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值