看了很多大佬的部落格,這裡簡練總結叙述一下步驟:
第一步:Springboot項目內建alibaba.druid
不是本文重點
第二步:在你的本地倉庫裡找到你的druid jar包,在目前路徑下cmd,執行指令:(下面的jar包是我的版本1.1.13)
java -cp druid-1.1.13.jar com.alibaba.druid.filter.config.ConfigTools yourpassword
輸出的privateKey為你的私鑰,publicKey為公鑰,password為你加密後的密碼
第三步:properties配置檔案中druid的參數裡增加:
spring.datasource.druid.filters= config
spring.datasource.druid.filter.config.enabled=true
第四步:修改你的資料庫密碼為第二步裡加密後的password
第五步:增加DruidConfig.java配置類
@Configuration
public class DruidConfig {
//資料庫密碼公鑰
private static final String PUBLIC_KEY="第二步裡你的publicKey";
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${spring.datasource.name}")
private String name;
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
@Bean
@Primary
@ConfigurationProperties(prefix = "spring.datasource.druid")
public DataSource druidDataSource() {
DruidDataSource druidDataSource = new DruidDataSource();
druidDataSource.setDriverClassName(driverClassName);
druidDataSource.setName(name);
druidDataSource.setUrl(url);
druidDataSource.setUsername(username);
druidDataSource.setPassword(password);
//如果你已經配置有DruidConfig.java類,以下是新增參數
Properties properties=new Properties();
properties.setProperty("config.decrypt","true");
properties.setProperty("config.decrypt.key",PUBLIC_KEY);
druidDataSource.setConnectProperties(properties);
return druidDataSource;
}
}
以上就可以正常運作了,測試你的項目是否可以正常通路資料庫。
第六步:編寫解密測試類
@Test
public void druidDecryptPwd() throws Exception {
String encryptAfterPwd="";//加密後的密碼
String publicKey="";//你的公鑰
String pwd= ConfigTools.decrypt(publicKey,encryptAfterPwd);
//這裡可以解密看到你的資料庫密碼明文
log.info("decrypt after pwd={}",pwd);
}