亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

Spring boot配置文件加解密詳解

2024-07-14 08:43:58
字體:
來源:轉載
供稿:網友

功能介紹

大家都知道在Spring boot開發過程中,需要在配置文件里配置許多信息,如數據庫的連接信息等,如果不加密,傳明文,數據庫就直接暴露了,相當于"裸奔"了,因此需要進行加密處理才行。

在項目中使用jasypt-1.9.4.jar包,能夠實現對明文進行加密,對密文進行解密。配置相關加密信息,就能夠實現在項目運行的時候,自動把配置文件中已經加密的信息解密成明文,供程序使用

下面話不多說了,來一起看看詳細的介紹吧

使用說明

1.pom引入依賴

<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>2.1.1</version></dependency>

2.配置文件application.yaml

******************加解密相關配置*******************jasypt: encrytor: #用來加解密的salt值 password: 123456 #用來使用新的算法,默認為org.jasypt.salt.NoOPIVGenerator,這樣的話我們就無法使用命令行中生成的密文 ivGeneratorClassname: org.jasypt.salt.RandomIVGenerator

參數解釋:

  • password:加密時候要使用salt值
  • 對于ivGeneratorClassname,jara包中封裝類默認為org.jasypt.salt.NoOpIVGenerator,這個時候我們如果使用Junit生成密文,那么只會生成24位密鑰,與命令行中用命令生成的不一樣,后面會詳細講解。

3.代碼解析

首先我們需要知道的事加解密的方法,只有知道了如何加密才能夠在配置文件中設置相關參數的密文,這里涉及到兩種方式的加密:

a.命令行加密

如果我們項目上線了,需要修改配置文件中的信息,這個時候我們可能要通過命令行的方式去加密(前提:保證你的salt值和你的項目中定義的一致)

I.找到maven倉庫本地地址,如:C:/Users/kfzx-xuming/.m2/repository 在這里面找到jasypt-1.9.4.jar所在位置

Spring,boot,配置文件,加密

II.進入文件夾,運行cmd命令

加密:java -cp jasypt-1.9.4.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLIinput=pass1234password=12345algorithm=PBEWithMD5AndDES

參數說明:

  • input:加上需要加密的明文
  • password:加上salt值(需要和項目中的application.yaml的password 一致)
  • algorithm:加上加密算法(默認使用的就是PBEWithMD5AndDES)

這個時候我們可以看到下面的加密結果:

Spring,boot,配置文件,加密

下面的output中就是我們對明文pass1234使用salt值為12345加密的結果

解密:java -cp jasypt-1.9.4.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input=pdFVCKrYnVOkTpeJ+081g70kzVWV2aLrTOK2EjrJkkSNMbu4C4IX+Q== password=12345 algorithm=PBEWithMD5AndDES

這個時候我們可以看到解密結果:

Spring,boot,配置文件,加密

b.在eclipse中用Junit運行代碼對明文加密解密

前提已經在配置文件中配置了jasypt相關信息

jasypt提供了封裝類StringEncryptor,可以通過代碼來加解密,我們可以使用這個類運行相關方法

Junit相關代碼:

import org.jasypt.encryption.StringEncryptor;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import static sun.plugin.javascript.navig.JSType.Embed; @RunWith(SpringJUnit4ClassRunner.class)@SpringBootTestpublic class JasyptTest {  @Autowired StringEncryptor encryptor; //加密 @Test public void getPass(){ String name = encryptor.encrypt("hello"); System.out.println("加密結果:"+name);//解密 @Test public void passDecrypt(){ String username = encryptor.decrypt("7uBC9fVLpL05ipEPzgsDT6Qcjuq9HvDYc0VUIgP4hY="); System.out.println("解密結果:"+username); }}

運行結果如下:

Spring,boot,配置文件,加密

這個時候我們就得到了想要的密文,直接粘貼到配置文件中即可

使用方法如下:

I.在配置文件application.yaml相關位置把明文替換成密文,用ENC()包裹:

************** 加解密相關測試配置信息***************test: code: username: ENC(pdFVCKrYnVOkTpeJ+081g70kzVWV2aLrTOK2EjrJkkSNMbu4C4IX+Q==)

II.在相應的位置直接讀取使用即可,下面我們寫一個controller類測試一下運行解密的效果:

import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; @Controllerpublic class JasyptController {  @Value("${cmd.username}") private String cmdUsername;  @RequestMapping("/hello") public String testJasypt() { return cmdUserName; }}

這個時候我們啟動項目就能夠看到我們再配置中設置的密文對應的明文

至此配置文件的加解密的使用方法就介紹完了

4.補充說明

對于上述配置文件中的ivGeneratorClassname再進行一個詳細的介紹

對于上述的Junit中使用的StringEncryptor封裝類,他是可以通過讀取配置文件中的信息進行加解密相關參數進行初始化,通過閱讀遠嗎,我們可以發現,初始化config的時候會跳轉到如下的地方進行設置:

Spring,boot,配置文件,加密

如果在配置參數中沒有設置ivGeneratorClassname,那么默認就是org.jasypt.salt.NoOpIVGenerator,那么在運行加解密的時候就會生成一個24位的密文,如圖:

Spring,boot,配置文件,加密

但是我們可以看到上面用命令行生成的卻比這個廠,這個時候如果我們把命令行中生成的密文粘貼到配置文件中則springboot就會啟動不了,Junit也會報錯解析,把這個密文用命令解析發現也會報錯

這個說明命令行中的加解密不是通過StringEncryptor類來操作的,那是走那邊的呢?

通過查閱資料我們發現了下面的代碼:

package cn.linjk.ehome; import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;import org.junit.Test; public class JasyptTest { @Test public void testEncrypt() throws Exception { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); EnvironmentPBEConfig config = new EnvironmentPBEConfig();  config.setAlgorithm("PBEWithMD5AndDES");  // 加密的算法,這個算法是默認的 config.setPassword("12345");   // 加密的密鑰 standardPBEStringEncryptor.setConfig(config); String plainText = "hello"; String encryptedText = standardPBEStringEncryptor.encrypt(plainText); System.out.println(encryptedText); }}

這個時候我們運行一下,得到下面的結果:

Spring,boot,配置文件,加密

把這個密文用命令進行解密發現也是成功的,查看源碼(下圖):可以看出,命令行如果沒有設置ivGeneratorClassname那么默認就會new RandomIVGenerator,就是這一步導致了生成了不一樣的密文:

Spring,boot,配置文件,加密

綜上所述,結合場景,如果我們是項目需要上線了,不方便運行Junit去生成密文,填入配置文件,需要用命令行對明文加密,那一定要在配置文件中設置ivGeneratorClassname值?。?!

公司電腦沒有辦法用外網上,圖片用手機拍的,如果感覺模糊,請見諒,大家相互學習~~~~~~

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九热视频这里只有精品| 色樱桃影院亚洲精品影院| 国产亚洲精品久久久久久牛牛| 狠狠躁天天躁日日躁欧美| 久久精品一本久久99精品| 国产原创欧美精品| 日韩精品亚洲精品| 日韩中文字幕欧美| 国产一区二区三区欧美| 91久久久久久久久久久久久| 91精品国产91久久| 国产精品美乳一区二区免费| 亚洲va电影大全| 中文字幕欧美精品日韩中文字幕| 欧美激情精品久久久久久久变态| 欧美性xxxx极品hd欧美风情| 中文字幕亚洲欧美日韩在线不卡| 亚洲偷欧美偷国内偷| 日韩电影网在线| 久久中文字幕在线视频| 国产一区二区色| 欧美多人乱p欧美4p久久| 中文字幕一区日韩电影| 精品国产一区二区三区在线观看| 亚洲免费中文字幕| 久久香蕉精品香蕉| 96精品久久久久中文字幕| 在线日韩av观看| 精品性高朝久久久久久久| 日韩电影中文字幕在线观看| 国产成人久久精品| 狠狠躁夜夜躁人人爽超碰91| 日韩在线播放一区| 久久久精品在线| 国产精品极品美女在线观看免费| 日本午夜人人精品| 5278欧美一区二区三区| 欧美高清在线视频观看不卡| 2018中文字幕一区二区三区| 久久影视电视剧免费网站| 亚洲xxxxx电影| 亚洲国产91精品在线观看| 亚洲国产精品高清久久久| 7777kkkk成人观看| 精品视频久久久久久久| 精品久久久久久久久久久久久| 亚洲精品中文字| 亚洲第一色在线| 激情成人在线视频| 欧美日韩一区二区在线播放| 久久久久久91香蕉国产| 尤物99国产成人精品视频| 性欧美激情精品| 日韩免费视频在线观看| 一区二区三区视频在线| www.99久久热国产日韩欧美.com| 少妇av一区二区三区| 亚洲成人久久久久| 亚洲欧美日韩视频一区| 亚洲精品综合精品自拍| 亚洲毛茸茸少妇高潮呻吟| 亚洲免费视频观看| 91老司机在线| 美女福利精品视频| 97精品视频在线观看| 亚洲国语精品自产拍在线观看| 亲爱的老师9免费观看全集电视剧| 日韩在线观看免费| 这里只有精品在线播放| 国产福利精品在线| 亚洲一区二区三区xxx视频| 久久久久国色av免费观看性色| 91精品中文在线| 国产精品免费观看在线| 尤物精品国产第一福利三区| 欧美精品18videosex性欧美| 国产精品h片在线播放| 亚洲国产日韩欧美在线图片| 国产精品美女无圣光视频| 久久久成人av| 中文字幕久热精品在线视频| 国产精品流白浆视频| 日韩成人在线观看| 国产亚洲精品一区二555| 亚洲国产女人aaa毛片在线| 久久在线免费观看视频| 91精品久久久久久久久久另类| 美女999久久久精品视频| 亚洲精品福利免费在线观看| 成人有码在线视频| 亚洲福利在线看| 欧美电影在线观看网站| 一区二区三区美女xx视频| 成人黄色激情网| 久热爱精品视频线路一| 国产91|九色| 久久精品国产精品亚洲| 亚洲天堂视频在线观看| 国产亚洲欧洲高清一区| 日韩av影视综合网| 国产亚洲欧美aaaa| 亚洲一区二区三区视频播放| 国产美女91呻吟求| 国产精品va在线| 国产精品嫩草影院久久久| 午夜精品一区二区三区av| 日韩黄色高清视频| 国产精品1234| 亚洲免费视频观看| 91久久久国产精品| 亚洲xxx自由成熟| 91久久国产精品91久久性色| 精品国模在线视频| 亚洲国产高清自拍| 亚洲第一级黄色片| 欧美精品日韩三级| 97精品在线视频| 亚洲欧美中文日韩在线| 亚洲第一av网站| 国内伊人久久久久久网站视频| 国产精品天天狠天天看| 国产精品久久久久久久av大片| 久久久久久久成人| 91精品国产91久久| 国产91亚洲精品| 欧美影院成年免费版| 精品中文字幕在线观看| 77777少妇光屁股久久一区| 97人人做人人爱| www日韩欧美| 亚洲国产又黄又爽女人高潮的| 色综合天天综合网国产成人网| 成人a级免费视频| 91在线视频一区| 91视频免费在线| 久久久久久久999| 亚洲男人第一网站| 欧美日韩国产成人高清视频| 在线观看精品国产视频| 久久av在线看| 欧美视频二区36p| 亚洲美女久久久| 北条麻妃一区二区在线观看| 精品自在线视频| 伊人亚洲福利一区二区三区| 国产精品www色诱视频| 深夜福利91大全| 98精品国产高清在线xxxx天堂| 亚洲最大在线视频| 隔壁老王国产在线精品| 国产一区二区免费| 日本一区二三区好的精华液| 欧美激情欧美狂野欧美精品| 国产精品免费一区二区三区都可以| 91在线观看免费高清| 欧美午夜精品伦理| 久久成人精品视频| 久久精品国产免费观看| 国产精品嫩草视频| 另类色图亚洲色图| 91久久精品美女高潮| 日韩高清av一区二区三区| 精品国产一区二区三区四区在线观看| 国产综合香蕉五月婷在线|