目錄
第一步:添加依賴
第二步:新增加密類
第三步:配置application
錄下來,以防後自己忘記
第一步:添加依賴
在pom檔案中增加druid的引入依賴
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.13</version>
</dependency>
第二步:新增加密類
新增一個加密密碼生成類:
import com.alibaba.druid.filter.config.ConfigTools;
import java.util.logging.Level;
import java.util.logging.Logger;
public class PasswordGenerator {
private static final Logger log = Logger.getLogger(PasswordGenerator.class.getName());
public static void main(String[] args) throws Exception {
String password = "material";
log.log(Level.INFO, "明文密碼:{0}", password);
String privateKey = "MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEAvcCX4bgbJYPtV3VVB3DEF7taKikTor7FbPRv+t0KLDPUQq66DFg5jI8xtZqg/tibrQRT2Z7NlzCZ1lCraIkD+wIDAQABAkArlKxNf0dc2mwMhjo9Nz0SZklTHZQQ8NfPKmT9rP7FH8w87+AJCAiVxmLONtz9RDPZHJd6Rs9Hw/Ta1leSeG/BAiEA+atoPpSgKc9JQkHFUXpwf3hU2JpmUxW/b1Vk387CwCkCIQDCkEQnGBEEsAZREQYrmEBcePsfJwfgx7sa4ISenlUXgwIhAIhXd4T9Sv2qChqZqjSVhYvG3aavooNq0/DrlDu4QJgJAiEAu4cPmVqx9IGw5OvytYwe5MJa0PDuv/Hi3onuaXAUdf8CIFG0RKBVCMGL6cHaxU0kL9Uzbzfcrzxj+4+OpDW4vrw1";
String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL3Al+G4GyWD7Vd1VQdwxBe7WiopE6K+xWz0b/rdCiwz1EKuugxYOYyPMbWaoP7Ym60EU9mezZcwmdZQq2iJA/sCAwEAAQ==";
password = ConfigTools.encrypt(privateKey, password);
log.log(Level.INFO, "privateKey私鑰:{0}", privateKey);
log.log(Level.INFO, "publicKey公鑰:{0}", publicKey);
log.log(Level.INFO, "密文密碼:{0}", password);
String passwordStr = ConfigTools.decrypt(publicKey, password);
log.log(Level.INFO, "解密後密碼:{0}", passwordStr);
}
}
直接修改password字元串的值,然後運作即可産生加密的密碼
此處如果需要自己生成公鑰私鑰,則使用代碼:
String[] keyPair = ConfigTools.genKeyPair(2048);
//私鑰
String privateKey = keyPair[0];
//公鑰
String publicKey = keyPair[1];
然後列印到控制台
第三步:配置application
配置application.yml檔案
增加配置項 publicKey:
custom:
publicKey: MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAL3Al+G4GyWD7Vd1VQdwxBe7WiopE6K+xWz0b/rdCiwz1EKuugxYOYyPMbWaoP7Ym60EU9mezZcwmdZQq2iJA/sCAwEAAQ==
publicKey為生成類中的publicKey
在spring.datasource.druid配置下增加配置:
filter:
config:
enabled: true #資料庫過濾器是否開啟
connect-properties:
druid.statmergeSql: true #打開mergeSql功能
druid.stat.slowSqlMillis: 5000 #慢SQL記錄
config.decrypt: true #是否解密
config.decrypt.key: ${custom.publicKey} #解密的公鑰
然後就可以将第二步生成的資料庫加密後的密碼配置到原明文密碼的地方了,個人覺得比jasypt簡單友善,而且此方式是非對稱的。