SpringBoot利用jasypt實(shí)現(xiàn)配置文件加密的完整指南
在實(shí)際開發(fā)中,若出于安全考慮不想暴露一些敏感的配置,如數(shù)據(jù)庫(kù)密碼等,就需要對(duì)配置文件進(jìn)行加密,這個(gè)開源工具就很好幫我們實(shí)現(xiàn)這個(gè)需求
思路就是把配置文件中的值手動(dòng)加密填上去,然后生產(chǎn)環(huán)境的秘鑰通過(guò)運(yùn)行參數(shù)傳遞,開發(fā)測(cè)試環(huán)境可以直接把秘鑰寫在配置文件
1.引入依賴
非Spring Boot的使用方式可查閱官方文檔
github.com/ulisesbocchio/jasypt-spring-boot
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>${jasypt.spring.boot.version}</version>
</dependency>
2.yml 加入配置
# 配置秘鑰
jasypt:
encryptor:
password: ${jasypt.encryptor.password:defaultPwd}
# 需要加密的字段(明文:123456),需要使用ENC() 包裹
db:
password: ENC(bVv/e16L6qPO+1pqEPMUYT5uW1EjsERTCoIliqABM+YMr6WURdxPy26La8wHCxgF)
3.測(cè)試
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = OrderApplication.class)
public class DemoApplicationTest {
@Autowired
ConfigurableEnvironment environment;
@Autowired
StringEncryptor stringEncryptor;
static {
//指定運(yùn)行環(huán)境密碼
System.setProperty("jasypt.encryptor.password", "password");
}
@Test
public void testEnvironmentProperties() {
//解密密文
System.out.println(environment.getProperty("db.password"));
}
@Test
public void encrypt() {
//此處得到加密后的文本,放入yml
System.out.println("密文: " + stringEncryptor.encrypt("123456"));
}
}
方法補(bǔ)充
SpringBoot配置文件加密
依賴
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
設(shè)置秘鑰
jasypt.encryptor.password=秘鑰 開發(fā)環(huán)境可以直接在配置文件中指定,生產(chǎn)環(huán)境可以使用啟動(dòng)命理 --jasypt.encryptor.password=XXX 進(jìn)行配置 ####加密解密
package com.itdfq.springboot;
import org.jasypt.encryption.StringEncryptor;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
/**
* @author duanfangqin 2022/7/11 10:56
* @implNote
*/
@SpringBootTest
public class JasyptTest {
@Autowired
private StringEncryptor stringEncryptor;
@Test
public void encrypt(){
System.out.println(stringEncryptor.encrypt("qweasd123"));
}
@Test
public void decrypt(){
System.out.println(stringEncryptor.decrypt("zI16ovOHuYiPIQaFx9cVlJF30bg5h3ql"));
}
}
配置文件密碼設(shè)置
#Redis服務(wù)器地址 spring.redis.host=119.3.234.108 #服務(wù)器密碼 spring.redis.password=ENC(nwElWn8r6aqVHDdAStIRiEXPAiE57qUF)
ENC(加密之后的密碼)
到此這篇關(guān)于SpringBoot利用jasypt實(shí)現(xiàn)配置文件加密的完整指南的文章就介紹到這了,更多相關(guān)SpringBoot jasypt配置文件加密內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Servlet編程第一步之從零構(gòu)建Hello?World應(yīng)用詳細(xì)步驟+圖解
本文詳細(xì)介紹了Servlet和maven的基本概念及其在JavaWeb開發(fā)中的應(yīng)用,首先解釋了Servlet是一個(gè)在服務(wù)器上處理請(qǐng)求的Java程序,然后介紹了maven作為管理和構(gòu)建Java項(xiàng)目的工具,需要的朋友可以參考下2024-10-10
SpringBoot項(xiàng)目微信云托管入門部署實(shí)踐
本文主要介紹了SpringBoot項(xiàng)目微信云托管入門部署實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
Spring Security基于Customizer 的分布式權(quán)限配置最佳實(shí)踐指南
本文介紹了如何通過(guò)引入“插拔式”設(shè)計(jì)模式來(lái)解決SpringSecurity開發(fā)中的痛點(diǎn),包括調(diào)度中心、標(biāo)準(zhǔn)協(xié)議和業(yè)務(wù)實(shí)現(xiàn)三個(gè)部分,并詳細(xì)介紹了這個(gè)機(jī)制的工作原理、優(yōu)點(diǎn)和注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧2025-12-12
JAVA利用HttpClient進(jìn)行POST請(qǐng)求(HTTPS)實(shí)例
下面小編就為大家?guī)?lái)一篇JAVA利用HttpClient進(jìn)行POST請(qǐng)求(HTTPS)實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起 小編過(guò)來(lái)看看吧2016-11-11
Java方法遞歸的形式和常見遞歸算法(方法遞歸結(jié)合File類查找文件)
方法遞歸方法直接調(diào)用自己或者間接調(diào)用自己的形式稱為方法遞歸( recursion),遞歸做為一種算法在程序設(shè)計(jì)語(yǔ)言中廣泛應(yīng)用,這篇文章主要介紹了Java方法遞歸的形式和常見遞歸算法-方法遞歸結(jié)合File類查找文件,需要的朋友可以參考下2023-02-02
Spring Boot如何使用Spring Security進(jìn)行安全控制
要實(shí)現(xiàn)訪問控制的方法多種多樣,可以通過(guò)Aop、攔截器實(shí)現(xiàn),也可以通過(guò)框架實(shí)現(xiàn),本文將具體介紹在Spring Boot中如何使用Spring Security進(jìn)行安全控制。2017-04-04

