第十九章介紹了Jasypt,用於在Spring Boot應用中加密敏感信息。通過jasypt-spring-boot-starter依賴項,配置加密演算法和密碼,並使用StringEncryptor加密和解密。加密後的信息可嵌入屬性文件中,提高資料庫密碼等敏感信息的安全性。加解密基於密鑰,建議將密鑰通... ...
第十九章、Jasypt加密
Jasypt全稱是Java Simplified Encryption,是一個開源項目。
Jasypt與Spring Boot集成,以便在應用程式的屬性文件中加密敏感信息,然後在應用程式運行時解密這些信息。
可以使用jasypt-spring-boot-starter
這個依賴項。從而實現屬性源的加密和解密功能。另外,還可以使用@EnableEncryptableProperties
註解來啟用整個Spring環境中的可加密屬性。
除了使用starter之外,還可以通過添加@EncryptablePropertySource
註解來聲明單獨的可加密屬性源,或者使用自定義的ConfigurableEnvironment
類來實現加密屬性的啟用。
-
加密原理
-
引入依賴
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.5</version> </dependency>
-
配置
jasypt: encryptor: algorithm: PBEWITHHMACSHA512ANDAES_256 #預設指定加密演算法 password: 123456 # 指定密鑰:-Djasypt.encryptorpassword=123456
-
加密
@Autowired private StringEncryptor stringEncryptor; @Test public void testSecret() { //加密 String secret = stringEncryptor.encrypt("root"); System.out.println("secret = "+ secret); }
得到”root”加密後的字元串
-
解密
@Test public void testSecret() { // 解密 輸入獲取的加密字元串進行解密 String decrypt = stringEncryptor.decrypt("AFag9CUGUtX3ztEMirgaiKzwSy4d8jRDdrXwci+pCLfep2E6Hcl/vDz+6+YB46dm"); System.out.println("decrypt = " + decrypt); }
-
解密原理
配置文件中的
jasypt.encryptor.password
是密鑰,密鑰可以隨便設置,解密方法就是依靠密鑰才能實現的,否則解密失敗,密鑰一般不放在配置文件中,而是通過vm傳參載入**-Djasypt.encryptor.password=
zxckqwe**jar包 載入密鑰的方式:將參數放在-jar的後面
-
資料庫連接,主機名、用戶名和密碼填:ENC(加密後的密碼)
mysql: host: ENC(d8CPj1+lGSxYqPv/sAbL9Sn8YxVEqNcEx8aRMKf3G3v76IGlbfI9+lCESQ7QLDtN) datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${mysql.host}:3306/ems?characterEncoding=UTF-8 username: ENC(DZKipHxtCFm3zsNq0rcPv0BhpQEPv/xlz+VD8GMOekznEDokVIvxtT2aAIqNoiNl) password: ENC(e453fFe9wzx4+WA4Lasg30rpS70iqyW68j+y8M6cpMIePiWfS5wBanzkk+C3GbXQ)
作者:揚眉劍出鞘
出處: https://www.cnblogs.com/eyewink/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。