springboot使用jasypt對配置文件加密加密數(shù)據(jù)庫連接的操作代碼
springboot使用jasypt對配置文件加密
<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ù)庫鏈接 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()格式,這里沒有進行加密 password: ENC(OVL1V3KDtTa8w9IIOVuSdeyCOsZXAN0+) #加密了密碼,ENC()括號內(nèi)為密文 driver-class-name: com.mysql.cj.jdbc.Driver mapper-locations: classpath*:mapper/otcmapper/*.xml
啟動類添加注解:@EnableEncryptableProperties
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class) @EnableEncryptableProperties @EnableScheduling //@EnableAsync public class SpBatchApplication { public static void main(String[] args) { SpringApplication.run(SpBatchApplication.class, args); } }
通過明文獲取加密的值 cmd在自己的maven倉庫目錄下執(zhí)行命令,(要保證依賴下載下來了)
解釋:input:
文字的明文password:
加密的鹽值(可隨意,必須=jasypt:encryptor:password: saltValue)algorithm:
PBEWithMD5AndDES(默認算法)
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+
啟動springboot就會自動解密了
通過密文和鹽值解密得到明文
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)建加解密工具實例 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)建加解密工具實例 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)建加解密工具實例 PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); //2.加解密配置 SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(crack); config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256); // 為減少配置文件的書寫,以下都是 Jasypt 3.x 版本,配置文件默認配置 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)建加解密工具實例 PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); //2.加解密配置 SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword(crack); config.setAlgorithm(PBEWITHHMACSHA512ANDAES_256); // 為減少配置文件的書寫,以下都是 Jasypt 3.x 版本,配置文件默認配置 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對配置文件加密,加密數(shù)據(jù)庫連接的文章就介紹到這了,更多相關(guān)springboot使用jasypt內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用@Transactional 設(shè)置嵌套事務(wù)不回滾
這篇文章主要介紹了使用@Transactional 設(shè)置嵌套事務(wù)不回滾問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07java 過濾器模式(Filter/Criteria Pattern)詳細介紹
這篇文章主要介紹了java 過濾器模式(Filter/Criteria Pattern)詳細介紹的相關(guān)資料,需要的朋友可以參考下2016-10-10Java中BigDecimal,DateFormatter?和迭代器的"陷阱"
這篇文章主要介紹了Java中BigDecimal,DateFormatter?和迭代器的"陷阱",文章圍繞主題展開詳細的內(nèi)容介紹,感興趣的小伙伴可以參考一下2022-06-06java使用PDFRenderer實現(xiàn)預覽PDF功能
這篇文章主要為大家詳細介紹了java使用PDFRenderer實現(xiàn)預覽PDF功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-12-12在Spring Boot中實現(xiàn)文件上傳與管理的操作
在 Spring Boot 中實現(xiàn)文件上傳與管理非常簡單,通過配置文件上傳、創(chuàng)建文件上傳、下載、列表和刪除接口,我們可以輕松地處理文件操作,結(jié)合前端頁面,可以提供一個完整的文件管理系統(tǒng),這篇文章主要介紹了在Spring Boot中實現(xiàn)文件上傳與管理,需要的朋友可以參考下2024-07-07Java實現(xiàn)轉(zhuǎn)跳不同系統(tǒng)使用枚舉加switch的方式示例
今天小編就為大家分享一篇關(guān)于Java實現(xiàn)轉(zhuǎn)跳不同系統(tǒng)使用枚舉加switch的方式示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12Java如何實現(xiàn)URL帶請求參數(shù)(get/post)及得到get和post請求url和參數(shù)列表的方法
本文給大家介紹Java如何實現(xiàn)URL帶請求參數(shù)(get/post)及得到get和post請求url和參數(shù)列表的方法,涉及到 java獲取post請求參數(shù)的方法,感興趣的朋友一起看看吧2015-10-10Java多線程之異步Future機制的原理和實現(xiàn)
這篇文章主要為大家詳細介紹了Java多線程之異步Future機制的原理和實現(xiàn),感興趣的小伙伴們可以參考一下2016-08-08