当前位置:   article > 正文

druid加密数据库密码_druid数据库密码加密方法

druid数据库密码加密方法

序言:

在日常工作中,经常使用数据库明文密码放在配置文件中,java打的包很容易就会被例如360的一些压缩软件解析出来,导致数据库泄露。在此情况下选择使用druid自带的加密机制来对明文密码进行加密处理

1. 引入druid

        <!--  alibaba  druid -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.9</version>
        </dependency>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. 密码加密工具

可以使用cmd进行操作,这里不做详细介绍

注意了,这里的公钥是解密,私钥是加密,和rsa加密相反

import com.alibaba.druid.filter.config.ConfigTools;
/**
 * 德鲁伊数据连接池数据库密码加密工具
 *
 * @author king
 * @date 2022-03-08
 */
public class DruidUtil {
 private static String PUBLIC_KEY = "";
    private static String PRIVATE_KEY = "";
    public static void main(String[] args) throws Exception {

        // 密码明文
        String password = "123456";
        System.out.println("password " + password);
        String [] keyPair = ConfigTools.genKeyPair(512);
        // 私钥
        PRIVATE_KEY = keyPair[0];
        // 公钥
        PUBLIC_KEY  = keyPair[1];
        // 用私钥加密后的密文
        password = ConfigTools.encrypt(PRIVATE_KEY, password);
        System.out.println("privateKey:" + PRIVATE_KEY);

        System.out.println("publicKey:" + PUBLIC_KEY);
		// 密文
        System.out.println("ciphertext:" + password);
        String decryptPassword = ConfigTools.decrypt(PUBLIC_KEY, password);
		// 原密码
        System.out.println("originalPassword" + decryptPassword);
    }

}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

运行后的到的就是我们需要的公钥,私钥,密文
在这里插入图片描述

3. 配置文件

配置文件中不需要显示公钥,由${cloud.config.key}代替

在大部分博客以及度娘里,都把publicKey直接放在这里,这和皇帝的新衣有什么区别

#整体配置
cloud:
  config:
    url: jdbc:mysql://127.0.0.1:3306/work?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=UTC
    password: RpVa40F4UTcL5E3xPA8dOguuOJxb5LdvEFlj1nsOfkD7KNiwT9BTpHFUcAI7J1iw==
spring:
  application:
    name: server-stare
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      url: ${cloud.config.url}
      username: root
      password: ${cloud.config.password}
      #这里配置的是sql可合并、执行允许最大延时、可加密、加密key
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;config.decrypt=true;config.decrypt.key=${cloud.config.key} #加密
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

配置启动项

这里用的是idea

// 你自己的公钥
--cloud.config.key=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJE1uhesdQeAryXchQlZaMCb+jucaoSTFgY/UaWIdY9mRrn6hdahUL1NPSJjyTK5dv5ZUqjGe8+0CAwEAAQ==
  • 1
  • 2

将公钥放在启动项的program arguments里就可以啦
在这里插入图片描述

打包后启动

java -jar startApplication.0.0.1.jar --cloud.config.key='你的公钥'
  • 1

看到这里是不是就熟悉了,和你使用的 --server.port=8080是不是一毛一样

最后

tomcat这里没研究,不做赘述。
在你写脚本文件启动项目的时候,不要在包旁直接放置脚本好吗

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Li_阴宅/article/detail/857057
推荐阅读
相关标签
  

闽ICP备14008679号