SpringBoot yml配置敏感信息加密的實(shí)現(xiàn)
在 Spring Boot 項(xiàng)目里運(yùn)用 Jasypt 實(shí)現(xiàn)配置文件的加密。
第一步:添加依賴
要在pom.xml文件中添加 Jasypt 的依賴。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
第二步:配置加密密鑰
有兩種方式可以配置加密密鑰,分別是通過環(huán)境變量和命令行參數(shù)。
環(huán)境變量方式
在application.properties或者application.yml中設(shè)置如下內(nèi)容:
jasypt.encryptor.password=${JASYPT_ENCRYPTOR_PASSWORD}
命令行參數(shù)方式
啟動應(yīng)用程序時(shí),使用以下命令添加參數(shù):
java -Djasypt.encryptor.password=your-secret-key -jar your-application.jar
第三步:生成加密值
下面是一個(gè)工具類,可用于生成加密值:
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;
public class JasyptUtils {
public static void main(String[] args) {
// 加密密鑰,實(shí)際使用時(shí)可通過環(huán)境變量或其他安全方式獲取
String password = "your-secret-key";
String plainText = "需要加密的內(nèi)容";
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
EnvironmentPBEConfig config = new EnvironmentPBEConfig();
config.setAlgorithm("PBEWithMD5AndDES");
config.setPassword(password);
encryptor.setConfig(config);
String encryptedText = encryptor.encrypt(plainText);
String decryptedText = encryptor.decrypt(encryptedText);
System.out.println("原始文本: " + plainText);
System.out.println("加密后: ENC(" + encryptedText + ")");
System.out.println("解密后: " + decryptedText);
}
}
第四步:在配置文件中使用加密值
在配置文件里按照如下格式使用加密值:
# 數(shù)據(jù)庫配置示例 spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=ENC(加密后的用戶名) spring.datasource.password=ENC(加密后的密碼)
第五步:驗(yàn)證配置
啟動應(yīng)用程序時(shí),要確保已經(jīng)正確設(shè)置了加密密鑰。Jasypt 會在應(yīng)用啟動時(shí)自動對加密值進(jìn)行解密。
注意事項(xiàng)
- 加密密鑰屬于敏感信息,不能硬編碼在代碼或者配置文件中。建議通過環(huán)境變量、CI/CD 工具或者 Kubernetes Secret 等安全方式來管理。
- 可以根據(jù)實(shí)際需求調(diào)整加密算法,例如使用更安全的
PBEWITHHMACSHA512ANDAES_256。 - 要妥善保管好加密密鑰,一旦丟失,將無法對已加密的內(nèi)容進(jìn)行解密。
通過上述步驟,你就能在 Spring Boot 項(xiàng)目中安全地使用 Jasypt 對配置信息進(jìn)行加密了。
到此這篇關(guān)于SpringBoot yml配置敏感信息加密的是西安的文章就介紹到這了,更多相關(guān)SpringBoot yml敏感信息加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java之SpringBoot實(shí)現(xiàn)基本增刪改查(前后端分離版)
這篇文章主要介紹了Java中SpringBoot如何實(shí)現(xiàn)基本的增刪改查,前后端分離版,沒有和前端進(jìn)行聯(lián)系,感興趣的小伙伴可以借鑒閱讀本文2023-03-03
關(guān)于cron表達(dá)式每天整點(diǎn)執(zhí)行一次的問題
這篇文章主要介紹了關(guān)于cron表達(dá)式每天整點(diǎn)執(zhí)行一次的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
深入理解Java8新特性之Stream API的創(chuàng)建方式和中間操作步驟
Stream是Java8的一大亮點(diǎn),是對容器對象功能的增強(qiáng),它專注于對容器對象進(jìn)行各種非常便利、高效的 聚合操作(aggregate operation)或者大批量數(shù)據(jù)操作。Stream API借助于同樣新出現(xiàn)的Lambda表達(dá)式,極大的提高編程效率和程序可讀性,感興趣的朋友快來看看吧2021-11-11
Java設(shè)計(jì)模式之原型模式詳細(xì)解讀
這篇文章主要介紹了Java設(shè)計(jì)模式之原型模式詳細(xì)解讀,原型模式屬于創(chuàng)建型設(shè)計(jì)模式,用于創(chuàng)建重復(fù)的對象,且同時(shí)又保證了性能,該設(shè)計(jì)模式的好處是將對象的創(chuàng)建與調(diào)用方分離,需要的朋友可以參考下2023-12-12
Java文件操作與IO流詳解(File類+字節(jié)流+字符流)
文章主要介紹了文件、路徑和文件類型(文本文件和二進(jìn)制文件)的概念,并詳細(xì)介紹了Java中File類和FileInputStream、FileOutputStream、FileReader、FileWriter等幾個(gè)流類的操作方式,需要的朋友可以參考下2026-04-04
Springboot數(shù)據(jù)層開發(fā)全解析
本文介紹了SpringBoot數(shù)據(jù)層開發(fā)中數(shù)據(jù)源自動管理的配置方法,介紹了springboot整合jdbcTemplate、Springboot整合mybatis注解版、Springboot整合mybatis配置文件,感興趣的朋友跟隨小編一起看看吧2025-12-12

