使用Jasypt在Spring Boot專案中加密配置檔案中任何密碼 - Aanchal Sharma
在Spring Boot專案中,經常必須連線到MongoDB等資料庫,並將資料庫連線的真實密碼儲存在Spring Boot專案的配置檔案(application.yml或application.properties)中。甚至授權進行其他API呼叫所需的密碼或令牌也以相同的方式儲存。Jasypt庫可以幫助你加密這些密碼。
什麼是Jasypt?
Jasypt Java為Spring Boot應用中的屬性源提供了加密支援。它將幫助您以較少的工作量而無需編寫任何程式碼就將基本的加密功能新增到專案中!是的,您沒聽錯我的話,沒有程式碼……在您的專案中到處都是。Springboot是一個非常強大的框架,可以幫助您新增加密功能,而無需實現任何加密方法。Jasypt是高度可配置的。
使用Jasypt加密的步驟:
步驟1→ 新增jasypt的maven依賴項
在pom.xml檔案中,新增可以在maven儲存庫中輕鬆找到的maven依賴項。(我使用jasypt-spring-boot版本2.0.0,因為我發現它很穩定,並且遇到版本3.0.0的問題)
步驟2→在Spring Boot Application主配置類中新增註釋
需要新增@EnableEncryptableProperties批註,以使應用程式瞭解整個Spring Environment的可加密屬性。
步驟3→確定用於加密和解密的金鑰
祕密金鑰(您可以將其視為加密方法中使用的鹽)用於加密密碼,之後可以用於解密加密值以獲取實際密碼。您可以選擇任何值作為金鑰。
步驟4→生成加密金鑰
可以通過以下兩種方法之一生成加密金鑰:
4.1:使用Jasypt線上工具:
通過傳遞所選的祕密金鑰,此連結可用於生成加密金鑰。
加密密碼:abcd1234 選擇加密型別:Two-way encryption雙向加密(預設使用PBEWithMD5AndDES) 金鑰:hello (可以是任何值) 加密的字串:kNuS1WAezYE7cph7zXVTiPSQSdHTx7Kv 您實際上可以使用該工具通過解密來加密和檢查加密金鑰。 |
4.2:使用jasypt Jar:
您可以從maven儲存庫下載jasypt jar檔案,並通過以下命令執行它:
java -cp /<Path where the jar is located>/jasypt-1.9.3/lib/jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input=”xyz123" password=secretkey algorithm=PBEWithMD5AndDES |
以下是傳遞給執行jar的命令列引數的意義:
- 輸入:abcd1234 (要加密的實際密碼)
- 密碼:hello(您選擇的祕密金鑰)
- 演算法:PBEWithMD5AndDES (使用預設演算法)
- 輸出:scEjemHosjc / hjA8saT7Y6uC65bs0swg(輸入的加密值)
注意:雖然加密值3.1和3.2中的加密String和OUTPUT分別不同,因為金鑰相同,所以兩種情況下的解密結果都相同(abcd1234)。
步驟5→將加密金鑰新增到配置檔案(application.yml或application.properties)中
現在,而不是新增實際密碼如上面的“ abcd1234”,您需要新增通過以上任何一種方法生成的加密值。但是,jasypt依賴項將如何理解配置檔案的特定屬性需要解密?因此,為了使Jasypt知道您的加密值,它使用了一個約定,需要以以下格式新增:
ENC(<encrypted key>) ENC(scEjemHosjc/hjA8saT7Y6uC65bs0swg) |
在上圖中,完成了資料庫密碼的加密。您可以在必須隱藏實際密碼的任何情況下使用它。
步驟6:需要在執行時傳遞所選的祕密金鑰以進行解密
您需要使Jasypt知道用於形成加密值的金鑰。因此,以下是傳遞金鑰的不同方法:
6.1:將其作為屬性傳遞到配置檔案中。像往常一樣執行專案,解密就會發生。
jaypt: encrytor: password:hello |
6.2: 使用以下命令執行專案:
$mvn-Djasypt.encryptor.password=<secretkey> spring-boot:run $mvn-Djasypt.encryptor.password=hello spring-boot:run |
6.3: 環境設定JASYPT_ENCRYPTOR_PASSWORD=<secretkey>
JASYPT_ENCRYPTOR_PASSWORD=hello |
就可以通常的方式執行專案。
結論
有時有必要隱藏您不想在程式碼中公開的機密密碼。因此,jasypt是在任何Spring Boot應用程式中實現此目標的簡便且適當的方法。請按照上述6個步驟操作,您就可以開始…
相關文章
- Spring Boot加密應用配置檔案敏感資訊(jasypt)Spring Boot加密
- SpringBoot專案配置檔案中密碼的加密Spring Boot密碼加密
- 在spring boot專案(maven)中引入其他 spring boot專案Spring BootMaven
- Spring Boot入門(一):使用IDEA建立Spring Boot專案並使用yaml配置檔案Spring BootIdeaYAML
- SpringBoot整合Jasypt安全框架,配置檔案內容加密Spring Boot框架加密
- Spring Boot 配置檔案Spring Boot
- SpringBoot專案配置檔案加密Spring Boot加密
- Spring Boot 框架中配置檔案 application.properties 當中的所有配置大全Spring Boot框架APP
- Spring-Boot專案中配置redis註解快取SpringbootRedis快取
- spring boot配置檔案相關Spring Boot
- Spring Boot 配置檔案總結Spring Boot
- Spring Boot EL獲取配置檔案中的值的方式Spring Boot
- Spring Boot @PropertySource 載入指定配置檔案、@ImportResource 匯入Spring 配置檔案Spring BootImport
- SpringBoot專案使用jasypt加解密Spring Boot解密
- Spring 原始碼(4)在Spring配置檔案中自定義標籤如何實現?Spring原始碼
- Golang專案中讀取配置檔案Golang
- Spring Boot的配置檔案管理技巧Spring Boot
- Spring - 配置檔案中的特殊字元Spring字元
- Jasypt工具類(jasypt-spring-boot-starter)Springboot
- 使用gradle搭建spring boot專案GradleSpring Boot
- 使用 Docker 部署 Spring Boot 專案DockerSpring Boot
- 使用Docker部署Spring Boot專案DockerSpring Boot
- Spring Boot 配置檔案中的花樣,看這一篇足矣!Spring Boot
- Spring Boot 配置檔案中的花樣,看這一篇足矣Spring Boot
- 在Docker中部署Spring Boot專案DockerSpring Boot
- 精進 Spring Boot 03:Spring Boot 的配置檔案和配置管理,以及用三種方式讀取配置檔案Spring Boot
- 在Spring Boot中從類路徑載入檔案解決方案Spring Boot
- SpringBoot專案中獲取配置檔案的配置資訊Spring Boot
- 使用Spring Boot開發Web專案Spring BootWeb
- 使用gradle管理spring-boot專案GradleSpringboot
- 你真的理解 Spring Boot 專案中的 parent 嗎?Spring Boot
- Spring Boot專案中如何定製攔截器Spring Boot
- Intellij IDEA 中 的spring boot 專案使用了spring-boot-devtools要做的兩個設定IntelliJIdeaSpring Bootdev
- 結合SpEL使用@Value-基於配置檔案或非配置的檔案的值注入-Spring BootSpring Boot
- 1.7.5. 將使用者新增到密碼檔案中密碼
- Spring Boot專案建立Spring Boot
- 通過配置tomcat在瀏覽器訪問非專案中的檔案Tomcat瀏覽器
- spring boot 專案報錯找不到compose.yaml檔案Spring BootYAML