数据库密码加密

数据库密码加密

对于我们的项目配置文件,特别是数据库密码,明文展示的话安全性不高,容易被搞坏事

这个时候我们就可以通过Druid数据库连接池来对密码进行一个加密

我们就可以在配置数据库密码的地方去使用加密后的密码去连接数据库了

别人没你的私钥,别人就算看到加密后的数据库密码

别人也是无法解密出来的

下面是具体的操作步骤:

1.首先引入Druid依赖

<!-- druid连接池,数据库工具 -->
<dependency>
  <groupId>com.alibaba</groupId>
  <artifactId>druid-spring-boot-starter</artifactId>
  <version>1.1.21</version>
</dependency>

下面可选的做一个就行

2.编写工具类(可选)

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

import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;

/**
 * 数据库加密Util
 */
public class DruidEncryptUtil {
    private static String publicKey;
    private static String privateKey;
    static {
        try {
            String[] keyPair = ConfigTools.genKeyPair(512);
            privateKey = keyPair[0];
            System.out.println("privateKey:"+ privateKey);
            publicKey = keyPair[1];
            System.out.println("publicKey:"+ publicKey);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        } catch (NoSuchProviderException e) {
            e.printStackTrace();
        }
    }
    //私钥加密
    public static String encrypt(String plainText) throws Exception {
        String encrypt = ConfigTools.encrypt(privateKey, plainText);
        System.out.println("encrypt:"+encrypt);
        return encrypt;
    }
    //公钥解密
    public static String decrypt(String encryptText) throws Exception {
        String decrypt = ConfigTools.decrypt(publicKey, encryptText);
        System.out.println("decrypt:"+decrypt);
        return decrypt;
    }

    public static void main(String[] args) throws Exception {
        //在这填入你想加密的密码或内容,运行一下,控制台就能打印出来私钥,公钥,和加密后的密码
        // 把公钥和加密后的密码配置到配置文件即可
        String encrypt = encrypt("123456");
        System.out.println("encrypt:"+encrypt);
    }
}

我们运行这个main方法

就能够获取到加密后的私钥,公钥,和加密后的密码

2.直接运行jar包来完成加密(可选)

我们找到1步骤maven下载的jar包位置

cmd打开控制台

输入 java -cp druid-1.1.21.jar com.alibaba.druid.filter.config.ConfigTools 要加密的密码

这样控制台就会打印出来密码的私钥,公钥,和加密后的密码

3.写入配置文件

spring:
  datasource:
    url: jdbc:mysql://数据库ip:数据库端口/数据库?useSSL=false&rewriteBatchedStatements=true
    username: root
    password: ZW/mf9EZ...... #填加密过后的密码   ps:数据库密码明文加密
    driver-class-name: com.mysql.jdbc.Driver
    druid:	#数据库连接池
      initial-size: 20 # 初始化大小
      min-idle: 20 # 最小空闲
      connectionProperties: config.decrypt=true;config.decrypt.key=${publicKey};
      max-active: 100 # 最大活跃
      max-wait: 60000 # 最大等待
      stat-view-servlet:
        enabled: true # 开启监控
        url-pattern: /druid/* # 监控路径
        login-username: admin # 登录用户名
        login-password: 123456 # 登录密码
      filter:
        stat:
          enabled: true # 开启监控
          slow-sql-millis: 2000 # 慢sql阈值,大于则记录慢sql,ms
          log-slow-sql: true # 是否记录慢sql
        wall:
          enabled: true # 开启防御sql注入
        config:
          enabled: true #开启druid解密  ps:数据库密码明文加密,必须有这个配置才能解密

publicKey: MFww..... #公钥 ps:数据库密码明文加密,这个公钥也可配置在nacos上,只要能读到就行

直接配置在配置文件中,就能够做到这个加密的功能了

同样像ip,端口,数据库名字 也可以通过这种方式加密噢,你可以自己试一下

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值