nacos配置ENC(...)加密實現(xiàn)方式
nacos配置ENC(...)加密方式
如:
spring.datasource.password=ENC(xxxx)
在 Spring Boot 項目中,Jasypt 是一個常用的加密和解密工具,用于安全地管理敏感信息(例如數(shù)據(jù)庫密碼)。
從日志來看,jasypt 初始化了默認(rèn)的加密器 Default String Encryptor,但您想自定義 jasyptStringEncryptor 解密邏輯。
以下是實現(xiàn)步驟:
1.添加依賴
確保在 pom.xml 或 build.gradle 中包含 Jasypt 的依賴:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.5</version> <!-- 替換為合適版本 -->
</dependency>
2.配置 jasypt 密鑰
在 application.properties 或 application.yml 文件中配置加密密鑰:
jasypt.encryptor.password=your-encryption-password
注意: your-encryption-password 是用于加密和解密的密鑰,建議不要硬編碼,可通過環(huán)境變量注入。
3.定義自定義 jasyptStringEncryptor
您可以在配置類中自定義一個 StringEncryptor Bean:
import org.jasypt.encryption.StringEncryptor;
import org.jasypt.encryption.pbe.PooledPBEStringEncryptor;
import org.jasypt.salt.RandomSaltGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class JasyptConfig {
@Bean(name = "jasyptStringEncryptor")
public StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
encryptor.setPoolSize(4); // 設(shè)置線程池大小
encryptor.setPassword("your-encryption-password"); // 配置密鑰
encryptor.setAlgorithm("PBEWithMD5AndDES"); // 加密算法
encryptor.setSaltGenerator(new RandomSaltGenerator());
return encryptor;
}
}
4.加密和解密示例
加密:
使用 Jasypt 工具對敏感數(shù)據(jù)加密:
# 示例加密命令 java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI \ input="your-secret-password" \ password="your-encryption-password" \ algorithm="PBEWithMD5AndDES"
輸出: ENC(your-encrypted-string),將其用于配置文件。
解密:
當(dāng)配置文件中包含加密數(shù)據(jù)(例如數(shù)據(jù)庫密碼)時:
spring.datasource.password=ENC(your-encrypted-string)
jasyptStringEncryptor 會自動解密。
5.驗證日志
啟動項目,日志中應(yīng)該顯示 jasyptStringEncryptor 已被使用:
INFO c.u.jasyptspringboot.encryptor.CustomStringEncryptor - String Encryptor custom Bean found with name ‘jasyptStringEncryptor’.
6.手動調(diào)用解密(可選)
如果需要在代碼中手動解密:
import org.jasypt.encryption.StringEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class DecryptionService {
@Autowired
private StringEncryptor stringEncryptor;
public String decrypt(String encryptedText) {
return stringEncryptor.decrypt(encryptedText);
}
}
注意事項:
1. 密鑰安全性:不要將密鑰硬編碼到代碼中,建議使用環(huán)境變量或密鑰管理工具。
2. 日志安全性:不要在日志中打印明文數(shù)據(jù)。
3. 加密算法:根據(jù)需求選擇更強的加密算法(如 AES)。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot使用@ResponseBody返回圖片的實現(xiàn)
這篇文章主要介紹了SpringBoot使用@ResponseBody返回圖片的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Java?Web開發(fā)中的分頁與參數(shù)校驗舉例詳解
這篇文章主要介紹了JavaWeb開發(fā)中的分頁設(shè)計和參數(shù)校驗,分頁設(shè)計通過分頁查詢參數(shù)優(yōu)化查詢性能,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
Spring?Boot多數(shù)據(jù)源事務(wù)@DSTransactional的使用詳解
本文主要介紹了Spring?Boot多數(shù)據(jù)源事務(wù)@DSTransactional的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
SpringBoot更改啟動圖標(biāo)實現(xiàn)方式
文章介紹了如何在Spring Boot應(yīng)用中修改啟動圖標(biāo),首先,可以使用原始的圖標(biāo)樣式或從指定的URL獲取新的圖標(biāo)樣式,并將其保存為banner.txt文件,在banner.txt文件中,可以配置顏色和版本號等信息,此外,還可以通過配置文件指定自定義的圖標(biāo)路徑,使用文本或圖片格式2025-11-11
Java服務(wù)調(diào)用失敗報Service com.oneinfinite.adflow.api.service.T
在Java開發(fā)中,服務(wù)調(diào)用是常見的操作,尤其是在微服務(wù)架構(gòu)中,然而,服務(wù)調(diào)用過程中可能會遇到各種問題,下面我們來看看如何解決Service com.oneinfinite.adflow.api.service.TestService with version 0.0.0 not found的問題吧2025-03-03

