druid 支持PasswordCallback

druid 支持PasswordCallback

首先 项目引入druid相关jar

其次 修改配置文件
配置文件配置druid的配置参数

  1. spring.datasource.druid.connect-properties=config.decrypt=true
  2. spring.datasource.druid.password-callback=com.XXX.util.DBPasswordCallback
  3. spring.datasource.filters=stat,wall,log4j
  4. spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000;password=fVDKvFmZt

然后

import com.alibaba.druid.util.DruidPasswordCallback;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;

import java.util.Properties;

@SuppressWarnings("serial")
public class DBPasswordCallback extends DruidPasswordCallback {

    private static Logger log = Logger.getLogger(DBPasswordCallback.class);

    //上述生成的公钥
    public static final String PRIVATE_KEY_STRING = "MIICdgIBADANBgkqhkiG9=";

    @Override
    public void setProperties(Properties properties) {
        super.setProperties(properties);
        String pwd = (String)properties.get("password");
        log.debug("DBPasswordCallback = " + pwd);
        if (StringUtils.isNotBlank(pwd)) {
            try {
                //这里的password是将jdbc.properties配置得到的密码进行解密之后的值
                //所以这里的代码是将密码进行解密
                //TODO 将pwd进行解密;
                String password = RSAKeysUtil.decrypt( pwd , PRIVATE_KEY_STRING );
                log.debug(password);
                setPassword(password.toCharArray());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

}

RSAKeysUtil是用RSA写的加密解密工具,密码的加密解密可以自己选择

最后是druid的配置类加上 druidDataSource.setPasswordCallbackClassName(passwordCallbackClassName);
项目启动就可以使用加密的密码了。

你可能感兴趣的:(java,数据库)