Druid 加密数据库密码 (仅需两步)

原创
2017/09/22 11:20
阅读数 171

1、首先通过工具类生成加密后的密文,publicKey 及解密后的明文,代码如下:

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

/**
 * desc 数据库密码加解密
 * 
 * @author dyl Aug 23, 2017
 */
public class EncryptDruidPwd {

    public static void main(String[] args) throws Exception {
        // 密码明文
        String[] passwords = { "ttt123_321", "tt123_321" };
        String[] users = { "admin321", "admin123", };

        // 用私钥加密后的密文
        for (int i = 0; i < passwords.length; i++) {
            String[] keyPair = ConfigTools.genKeyPair(1024 + i * 5);
            // 私钥
            String privateKey = keyPair[0];
            // 公钥
            String publicKey = keyPair[1];
            String encpwd = ConfigTools.encrypt(privateKey, passwords[i]);
            System.out.println(users[i] + ".publicKey=" + publicKey);
            System.out.println(users[i] + ".password=" + encpwd);
            // 解密
            String decryptPassword = ConfigTools.decrypt(publicKey, encpwd);
            System.out.println(names[i] + "decryptPassword:" + decryptPassword);
            System.out.println("----------------分隔符---------------------");
        }
    }
}

2、数据源配置解密方式:

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="${ji.jdbcUrl}" />
        <property name="username" value="${ji.user}" />
        <property name="password" value="${ji.password}" />
        <!-- 配置初始化大小、最小、最大 -->
        <property name="initialSize" value="5" />
        <property name="minIdle" value="2" />
        <property name="maxActive" value="200" />
        <property name="connectionInitSqls" value="set names utf8mb4;" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="60000" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="300000" />
        <property name="validationQuery" value="SELECT 'x'" />
        <property name="testWhileIdle" value="true" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
          <!-- 配置解密的所用到的publicKey -->
        <property name="filters" value="config" />
        <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${ji.publicKey}" /> 
    </bean>
展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部