在我們的服務中不可避免的需要使用到一些秘鑰(數據庫、redis等)
開發和測試環境還好,但生產如果采用明文配置講會有安全問題,jasypt是一個通用的加解密庫,我們可以使用它。
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency>
配置文件:
# 加密的密鑰 # 測試環境可以采用在配置文件中配置 # 生產環境建議采用啟動參數的形式傳入 # 其他配置參數參考:com.ulisesbocchio.jasyptspringboot.properties.JasyptEncryptorConfigurationProperties jasypt.encryptor.password=you salt # 解密得到原始密碼 spring.datasource.password= ENC(密文)
那密文怎么來的呢?
@Autowired StringEncryptor stringEncryptor; @Test public void encrypt() { System.out.println("PWD: " + stringEncryptor.encrypt("yourpassword")); }
public static void main(String[] args) { BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); //加密所需的salt(鹽) textEncryptor.setPassword("G0CvDz7oJn6"); //要加密的數據(數據庫的用戶名或密碼) String username = textEncryptor.encrypt("root"); String password = textEncryptor.encrypt("root123"); System.out.println("username:"+username); System.out.println("password:"+password); }
jasypt默認使用StringEncryptor來進行加解密,我們也可以自定義自己的加解密類來替換它,具體用戶用時請百度/google。
