druid数据库账号密码加密

本文介绍如何使用Druid数据库连接池对数据库密码进行加密处理,以提高安全性。包括使用ConfigTools工具加密密码、配置druid.properties文件以及自定义数据源实现密码解密等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

druid数据库账号密码加密

前言:

我们为什么需要数据库密码加密?

相信我们开发时,数据库的密码是以明文的形式存储在配置文件中,这种方式会存在非常大的安全隐患!

步骤如下:

1.数据库密码加密:

​ 语法:java -cp druid-1.1.10.jar com.alibaba.druid.filter.config.ConfigTools 密码

在这里插入图片描述

privateKey私钥
publicKey公钥
password密文(就是我们加密后的密码)
2.dataSource配置
2.0.1 druid.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/saas-export?characterEncoding=utf8
#username公钥
jdbc.usernamePublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAN7L7hBwvGqHc/8IMrxEDk35C89UcZARbGlb91PFFuGfXltXQiGu7pAmnh4YXtWpJTMrcKuUMeLeIq3ou+HIUgECAwEAAQ==
#username密文
jdbc.username=yd5SBXMIRrOoGpEc5TzkRsTr+DO1V3pRQr7Y5b65ByLQy8sBH0gPxL1zklo/S1Drp3hskSje7alqAFKF2deY5Q==
#password密文公钥
jdbc.pwdPublickey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALHD1xPgYgKQV7pdgTC2l9I2gn9lX2mKTSWa1cHFdB2xi7IBwOVhAbYXacxYrlMoGnQ0D8Mxeg8EFmGs45BbVw0CAwEAAQ==
#password密文
jdbc.password=VRndsoMVIMqR1U3k0hgnFI7Nd3gva/5eL/+UolerC5M4Wvu6lHLc4WKSXlYqEJ9h4zXPsIFbP0Uj7m0L8T6gsA==
#初始连接数
jdbc.initialSize=5
#最大连接数
jdbc.maxActive=50
#最大空闲
jdbc.maxWait=30000
#最小空闲
jdbc.minIdle=3
2.0.2 配置数据源(dataSource)
 <context:property-placeholder location="classpath:properties/druid.properties"/>

    <bean id="dataSource" class="cn.zonhar.datasource.DecryptDruidSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <!--注入username公钥-->
        <property name="usernamePublicKey" value="${jdbc.usernamePublicKey}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="initialSize" value="${jdbc.initialSize}"/>
        <property name="maxActive" value="${jdbc.maxActive}"/>
        <property name="maxWait" value="${jdbc.maxWait}"/>
        <property name="minIdle" value="${jdbc.minIdle}"/>
        <!---数据库密码进行解密-->
        <property name="filters" value="config" />
        <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${jdbc.pwdPublickey}" />
    </bean>
3.继承DruidDataSource并重写setUserName方法
package cn.zonhar.datasource;

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

public class DecryptDruidSource extends DruidDataSource {
    //用户名公钥
    private String  usernamePublicKey;
    @Override
    public void setUsername(String username) {
        try {
            //加密密码+公钥(publicKey)解密=明文密码
            username = ConfigTools.decrypt(usernamePublicKey,username);
        } catch (Exception e) {
            e.printStackTrace();
        }
        super.setUsername(username);
    }
    //setter方法给IOC容器注入
    public void setUsernamePublicKey(String usernamePublicKey) {
        this.usernamePublicKey = usernamePublicKey;
    }
}

4.测试

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值