Spring Boot學習隨筆- Jasypt加密數據庫用戶名和密碼以及解密
第十九章、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)
下一章:Spring Boot學習隨筆- 集成MyBatis-Plus,第一個MP程序(環境搭建、@TableName、@TableId、@TableField示例)
作者:揚眉劍出鞘
出處: http://www.rzrgm.cn/eyewink/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。

浙公網安備 33010602011771號