SpringBoot集成ENC對配置文件進行加密的流程步驟
配置文件加密,集成ENC
引入POM依賴
<!-- ENC配置文件加密 -->
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
【注意】開始使用的3.1.5版本,啟動報錯:
Reason: org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'spring.redis.password' to java.lang.String報錯原因:因為3.x版本的默認加密算法變了,所以對應(yīng)配置文件加密算法配置得修改,同時加密的方法也得用新的加密算法計算出加密字符串。
使用工具類對明文數(shù)據(jù)進行加密處理,使用完后為了安全起見,可以刪除加密鹽值
package com.basic.test;
import org.jasypt.util.text.BasicTextEncryptor;
import org.junit.Test;
/**
* ClassName: CryptTest
* Package: com.basic.test
* Description:
*
* @Author 王涵
* @Date 2024/12/17 14:18
* @Version 1.0
*/
public class CryptTest {
/**
* 加密鹽值,使用完成后進行刪除,或者不能提交到`生產(chǎn)環(huán)境`,比如:
*/
private final static String PASSWORD = "basic";
@Test
public void encTest() {
BasicTextEncryptor encryptor = new BasicTextEncryptor();
// 用于設(shè)置加密密鑰。密鑰是用于加密和解密字符串的關(guān)鍵信息。
encryptor.setPassword(PASSWORD);
// 明文1
String name_encrypt = "wwwbaiducom";
// 明文2
String password_encrypt = "123456";
// 明文加密
String encrypt1 = encryptor.encrypt(name_encrypt);
String encrypt2 = encryptor.encrypt(password_encrypt);
System.out.println("明文加密1:" + encrypt1);
System.out.println("明文加密2:" + encrypt2);
// 密文解密
String decrypt1 = encryptor.decrypt(encrypt1);
String decrypt2 = encryptor.decrypt(encrypt2);
System.out.println("密文解密1:" + decrypt1);
System.out.println("密文解密2:" + decrypt2);
}
}
將加密后的密碼配置到配置文件,使用
ENC()包裹。不需要ENC時可以直接寫密碼,不用ENC包裹即可
# 主庫數(shù)據(jù)源
master:
url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: ENC(dboFmyYdJOKJYKt1DX/jmzPBcipbHHeP)
運行時配置
打開Run/Debug Configuratios

打開
Modify options選擇Add VM Optiosn配置
VM Options為自己的加密鹽值

啟動類配置@EnableEncryptableProperties
package com.basic;
import com.ulisesbocchio.jasyptspringboot.annotation.EnableEncryptableProperties;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
/**
* @Author WangHan
* 心中那自由的世界,如此的清澈高遠。
* @Date 2024/12/6 14:47
* @Description 啟動程序
*/
@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })
@EnableEncryptableProperties
public class BasicApplication
{
public static void main(String[] args)
{
// 熱部署生效 true 開啟熱部署 false 關(guān)閉熱部署
System.setProperty("spring.devtools.restart.enabled", "false");
SpringApplication.run(BasicApplication.class, args);
System.out.println("(????)?? 基礎(chǔ)框架啟動成功 ?(′?`?)?");
}
}
jar包運行指定加密規(guī)則
cd /opt/home/test/ nohup java -Xms512m -Xmx512m -jar -Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX test-base.jar --spring.profiles.active=dev > test-base.out 2>&1 & echo start test-base
部署到tomcat
export JAVA_OPTS="-Djasypt.encryptor.password=0tjtdBL6Lwk73GCLVnD2gc1rDbfgCX"
以上就是SpringBoot集成ENC對配置文件進行加密的流程步驟的詳細內(nèi)容,更多關(guān)于SpringBoot ENC配置文件加密的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java如何動態(tài)的處理接口的返回數(shù)據(jù)
本文主要介紹了java如何動態(tài)的處理接口的返回數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01
解析Java的Jackson庫中對象的序列化與數(shù)據(jù)泛型綁定
這篇文章主要介紹了解析Java的Jackson庫中對象的序列化與數(shù)據(jù)泛型綁定,Jackson通常被用來實現(xiàn)Java對象和JSON數(shù)據(jù)的相互轉(zhuǎn)換功能,需要的朋友可以參考下2016-01-01
解決RabbitMq消息隊列Qos?Prefetch消息堵塞問題
這篇文章主要為大家介紹了關(guān)于如何解決解決RabbitMq?Qos?Prefetch消息堵塞的問題分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01
如何使用spring-ws發(fā)布webservice服務(wù)
文章介紹了如何使用Spring-WS發(fā)布Web服務(wù),包括添加依賴、創(chuàng)建XSD文件、生成JAXB實體、配置Endpoint、啟動服務(wù)等步驟,結(jié)合實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧2024-11-11
MyBatis自定義類型轉(zhuǎn)換器實現(xiàn)加解密
這篇文章主要介紹了MyBatis自定義類型轉(zhuǎn)換器實現(xiàn)加解密的相關(guān)資料,需要的朋友可以參考下2016-07-07
詳解Guava Cache本地緩存在Spring Boot應(yīng)用中的實踐
Guava Cache是一個全內(nèi)存的本地緩存實現(xiàn),本文將講述如何將 Guava Cache緩存應(yīng)用到 Spring Boot應(yīng)用中。具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01

