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);
項目啓動就可以使用加密的密碼了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章