SpringBoot使用除了Jasypt對(duì)YML文件配置內(nèi)容進(jìn)行加密方式
1. 在pom.xml中添加Jasypt依賴
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>>
2. 加密算法
// 1. 創(chuàng)建對(duì)象
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
// 2. 加密配置
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
// 秘鑰
config.setPassword("your-secret-key");
// 3. 加密算法,需要與解密算法一致
config.setAlgorithm("PBEWithMD5AndDES");
// 為減少配置文件的書寫,以下都是 Jasyp 3.x 版本,配置文件默認(rèn)配置
config.setKeyObtentionIterations( "1000");
config.setPoolSize("1");
config.setProviderName("JC");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
//需要加密的字符串
System.out.println( encryptor.encrypt("需加密的字符串"));
加密后的字符串

3. 在application.yml中配置加密相關(guān)信息
使用ENC(加密字符串)
url: jdbc:mysql://ip:port/test username: root password: ENC(w8bH76qYHSgDuxbwK0HsgPbmWZZMoxyVo0DvkOPSiY4=)
4. 配置的兩種方式
配置解密Bean并注入(硬編碼) 或 在Yml配置Jasypt(推薦)
4.1.1 配置Bean
@Configuration
@EnableEncryptableProperties
public class CustomEncryptConfig {
@Bean(name = "customStringEncryptor")
public static StringEncryptor stringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
// 2. 加解密配置
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("your-secret-key");
// 3. 解密算法,必須與加密算法一致
config.setAlgorithm("PBEWithMD5AndDES");
// 為減少配置文件的書寫,以下都是 Jasyp 3.x 版本,配置文件默認(rèn)配置
config.setKeyObtentionIterations( "1000");
config.setPoolSize("1");
config.setProviderName("JC");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
return encryptor;
}
}
4.1.2 啟動(dòng)類中配置 jasypt.encryptor.bean
customStringEncryptor為上一步配置的Bean
@SpringBootApplication
public class SpringBootTestApplication
{
public static void main(String[] args)
{
System.setProperty("jasypt.encryptor.bean", "customStringEncryptor");
SpringApplication.run(SnSkApplication.class, args);
}
}
4.2.1 啟動(dòng)類中配置 jasypt.encryptor.bean
customStringEncryptor為上一步配置的Bean
jasypt:
encryptor:
algorithm: PBEWithMD5AndDES //PBEWITHHMACSHA512ANDAES_256更安全
iv-generator-classname: org.jasypt.iv.NoIvGenerator
password: your-secret-key
4.2.2 配置服務(wù)器運(yùn)行參數(shù)
java -Xms256M -Xmx256M -jar / java/app.jar --jasypt.encryptor.password=xxxxx
但是如果我們配置了password值,就需要在啟動(dòng)類加上@EnableEncryptableProperties這個(gè)注解,用于自動(dòng)解密。
5. 注意
代碼加密時(shí)的秘鑰和算法必須和配置的相同
1. 必須和在Bean中配置的秘鑰和算法 一致對(duì)應(yīng)
2. 必需在Yml中的jasypt.encryptor.password 和 jasypt.encryptor.algorithm 一致對(duì)應(yīng)
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- SpringBoot整合Jasypt使用自定義注解+AOP實(shí)現(xiàn)敏感字段加解密
- SpringBoot整合Jasypt實(shí)現(xiàn)配置文件和數(shù)據(jù)庫字段敏感數(shù)據(jù)的加解密
- Springboot整合Jasypt對(duì)配置文件中的密碼加密的步驟
- SpringBoot集成Jasypt實(shí)現(xiàn)敏感信息加密保護(hù)功能
- SpringBoot整合jasypt實(shí)現(xiàn)數(shù)據(jù)加密的步驟
- SpringBoot整合jasypt實(shí)現(xiàn)重要數(shù)據(jù)加密
- SpringBoot利用jasypt實(shí)現(xiàn)配置文件加密的完整指南
相關(guān)文章
Spring實(shí)現(xiàn)聲明式事務(wù)的方法詳解
這篇文章主要介紹了Spring實(shí)現(xiàn)聲明式事務(wù)的方法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01
Java程序開發(fā)中abstract 和 interface的區(qū)別詳解
abstract class和interface在Java語言中都是用來進(jìn)行抽象類。但是兩者有什么區(qū)別呢,接下來小編給大家?guī)砹薬bstract 和 interface的區(qū)別詳解,感興趣的朋友一起學(xué)習(xí)吧2016-06-06
SpringBoot使用TraceId實(shí)現(xiàn)日志鏈路追蹤的步驟
本文介紹了如何實(shí)現(xiàn)服務(wù)調(diào)用的日志鏈路追蹤,包括整合logback打印traceId、配置日志文件、通過MDC傳遞追蹤ID,并重寫線程池方法以保證異步和定時(shí)任務(wù)線程的traceId傳遞,實(shí)現(xiàn)高效日志查找和追蹤,感興趣的朋友跟隨小編一起看看吧2025-10-10
Java用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例
下面小編就為大家?guī)硪黄狫ava用POI解析excel并獲取所有單元格數(shù)據(jù)的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10
Java基于Base64實(shí)現(xiàn)編碼解碼圖片文件
這篇文章主要介紹了Java基于Base64實(shí)現(xiàn)編碼解碼圖片文件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
SpringBoot配置Actuator組件,實(shí)現(xiàn)系統(tǒng)監(jiān)控
在生產(chǎn)環(huán)境中,需要實(shí)時(shí)或定期監(jiān)控服務(wù)的可用性。Spring Boot的actuator(健康監(jiān)控)功能提供了很多監(jiān)控所需的接口,可以對(duì)應(yīng)用系統(tǒng)進(jìn)行配置查看、相關(guān)功能統(tǒng)計(jì)等。2021-06-06
解決IDEA刪除子模塊并重建后MAVEN無法識(shí)別的問題
這篇文章主要介紹了解決IDEA刪除子模塊并重建后MAVEN無法識(shí)別的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02
比較java中Future與FutureTask之間的關(guān)系
在本篇文章里我們給大家分享了java中Future與FutureTask之間的關(guān)系的內(nèi)容,有需要的朋友們可以跟著學(xué)習(xí)下。2018-10-10

