springboot使用jasypt對(duì)配置文件加密加密數(shù)據(jù)庫(kù)連接的操作代碼
springboot使用jasypt對(duì)配置文件加密
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>1.14</version>
</dependency>springboot配置
jasypt:
encryptor:
password: saltValue #salt值,密文加鹽
spring:
datasource: # 數(shù)據(jù)庫(kù)鏈接
db1:
jdbc-url: jdbc:mysql://x.x.x.x:3306/db_test?useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8
username: root #也可以加密用戶名,依然是ENC()格式,這里沒(méi)有進(jìn)行加密
password: ENC(OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+) #加密了密碼,ENC()括號(hào)內(nèi)為密文
driver-class-name: com.mysql.cj.jdbc.Driver
mapper-locations: classpath*:mapper/otcmapper/*.xml啟動(dòng)類添加注解:@EnableEncryptableProperties
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
@EnableEncryptableProperties
@EnableScheduling
//@EnableAsync
public class SpBatchApplication {
public static void main(String[] args) {
SpringApplication.run(SpBatchApplication.class, args);
}
}通過(guò)明文獲取加密的值 cmd在自己的maven倉(cāng)庫(kù)目錄下執(zhí)行命令,(要保證依賴下載下來(lái)了)
解釋:input:文字的明文password:加密的鹽值(可隨意,必須=jasypt:encryptor:password: saltValue)algorithm:PBEWithMD5AndDES(默認(rèn)算法)
java -cp org/jasypt/jasypt/1.9.2/jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="密碼明文" password=saltValue algorithm=PBEWithMD5AndDES
執(zhí)行后輸出結(jié)果:OUTPUT就是密文了,把密文替換yml的屬性值就行
ENC(OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+)
----ARGUMENTS------------------- algorithm: PBEWithMD5AndDES input: 密碼明文 password: saltValue ----OUTPUT---------------------- OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+
啟動(dòng)springboot就會(huì)自動(dòng)解密了
通過(guò)密文和鹽值解密得到明文
java -cp jasypt-1.9.2.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="加密后的密文" password=saltValue algorithm=PBEWithMD5AndDES
代碼封裝工具類
public class JasyptUtil {
private static final String PBEWITHMD5ANDDES = "PBEWithMD5AndDES";
private static final String PBEWITHHMACSHA512ANDAES_256 = "PBEWITHHMACSHA512ANDAES_256";
/**
*
* @param text 待加密原文
* @param crack 鹽值(密鑰)
* @return 加密后的字符串
* @Description: Jasypt加密(PBEWithMD5AndDES)
*/
public static String encryptWithMD5(String text, String crack) {
//1.創(chuàng)建加解密工具實(shí)例
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
//2.加解密配置
EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
config.setAlgorithm(PBEWITHMD5ANDDES);
config.setPassword(crack);
encryptor.setConfig(config);
//3.加密
return encryptor.encrypt(text);
}
/**
*
* @param text 待解密原文
* @param crack 鹽值(密鑰)
* @return 解密后的字符串
* @Description: Jasypt解密(PBEWithMD5AndDES)
*/
public static String decryptWithMD5(String text, String crack) {
//1.創(chuàng)建加解密工具實(shí)例
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
//2.加解密配置
EnvironmentStringPBEConfig config = new EnvironmentStringPBEConfig();
config.setAlgorithm(PBEWITHMD5ANDDES);
config.setPassword(crack);
encryptor.setConfig(config);
//解密
return encryptor.decrypt(text);
}
/**
*
* @param text 待加密的原文
* @param crack 鹽值(密鑰)
* @return 加密后的字符串
* @Description: jasypt 加密(PBEWITHHMACSHA512ANDAES_256)
*/
public static String encryptWithSHA512(String text, String crack) {
//1.創(chuàng)建加解密工具實(shí)例
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
//2.加解密配置
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(crack);
config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256);
// 為減少配置文件的書(shū)寫(xiě),以下都是 Jasypt 3.x 版本,配置文件默認(rèn)配置
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
//3.加密
return encryptor.encrypt(text);
}
/**
*
* @param text 待解密原文
* @param crack 鹽值(密鑰)
* @return 解密后的字符串
* @Description: jasypt 解密(PBEWITHHMACSHA512ANDAES_256)
*/
public static String decryptWithSHA512(String text, String crack) {
//1.創(chuàng)建加解密工具實(shí)例
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
//2.加解密配置
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword(crack);
config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256);
// 為減少配置文件的書(shū)寫(xiě),以下都是 Jasypt 3.x 版本,配置文件默認(rèn)配置
config.setKeyObtentionIterations("1000");
config.setPoolSize("1");
config.setProviderName("SunJCE");
config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
config.setStringOutputType("base64");
encryptor.setConfig(config);
//3.解密
return encryptor.decrypt(text);
}
}到此這篇關(guān)于springboot使用jasypt對(duì)配置文件加密,加密數(shù)據(jù)庫(kù)連接的文章就介紹到這了,更多相關(guān)springboot使用jasypt內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用@Transactional 設(shè)置嵌套事務(wù)不回滾
這篇文章主要介紹了使用@Transactional 設(shè)置嵌套事務(wù)不回滾問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
java 過(guò)濾器模式(Filter/Criteria Pattern)詳細(xì)介紹
這篇文章主要介紹了java 過(guò)濾器模式(Filter/Criteria Pattern)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10
Java中BigDecimal,DateFormatter?和迭代器的"陷阱"
這篇文章主要介紹了Java中BigDecimal,DateFormatter?和迭代器的"陷阱",文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06
java使用PDFRenderer實(shí)現(xiàn)預(yù)覽PDF功能
這篇文章主要為大家詳細(xì)介紹了java使用PDFRenderer實(shí)現(xiàn)預(yù)覽PDF功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12
在Spring Boot中實(shí)現(xiàn)文件上傳與管理的操作
在 Spring Boot 中實(shí)現(xiàn)文件上傳與管理非常簡(jiǎn)單,通過(guò)配置文件上傳、創(chuàng)建文件上傳、下載、列表和刪除接口,我們可以輕松地處理文件操作,結(jié)合前端頁(yè)面,可以提供一個(gè)完整的文件管理系統(tǒng),這篇文章主要介紹了在Spring Boot中實(shí)現(xiàn)文件上傳與管理,需要的朋友可以參考下2024-07-07
Java實(shí)現(xiàn)轉(zhuǎn)跳不同系統(tǒng)使用枚舉加switch的方式示例
今天小編就為大家分享一篇關(guān)于Java實(shí)現(xiàn)轉(zhuǎn)跳不同系統(tǒng)使用枚舉加switch的方式示例,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Java如何實(shí)現(xiàn)URL帶請(qǐng)求參數(shù)(get/post)及得到get和post請(qǐng)求url和參數(shù)列表的方法
本文給大家介紹Java如何實(shí)現(xiàn)URL帶請(qǐng)求參數(shù)(get/post)及得到get和post請(qǐng)求url和參數(shù)列表的方法,涉及到 java獲取post請(qǐng)求參數(shù)的方法,感興趣的朋友一起看看吧2015-10-10
Java多線程之異步Future機(jī)制的原理和實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Java多線程之異步Future機(jī)制的原理和實(shí)現(xiàn),感興趣的小伙伴們可以參考一下2016-08-08

