SpringBoot配置文件密碼加密的三種方案
配置文件密碼加密的3種方案
一.配置文件添加jasypt
1.pom.xml添加jasypt引用
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> </dependency>
2.在springboot配置文件內(nèi)加入 jasypt配置
jasypt: encryptor: algorithm: PBEWithMD5AndDES ##鹽 password: dddda123 #密鑰
二.使用配置類初始加載加解密
1.pom.xml添加jasypt依賴
<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> </dependency>
2.編寫配置類加載bean
package com.top.common.config; import org.jasypt.encryption.StringEncryptor; import org.jasypt.encryption.pbe.PooledPBEStringEncryptor; import org.jasypt.encryption.pbe.config.SimpleStringPBEConfig; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; */ /** * @author * @date 2023/6/719:41 * @Package * @description 自動配置加密信息 *//* @Configuration public class EncryptorConfig { @Bean("jasyptStringEncryptor") public StringEncryptor jasyptStringEncryptor() { PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor(); SimpleStringPBEConfig config = new SimpleStringPBEConfig(); config.setPassword("WyYJ5C8l9qWSjkMpP2ilsIRkvhvp9wH4"); // 注釋部分為配置默認 config.setAlgorithm("PBEWithMD5AndDES"); // 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); return encryptor; } }
三、不在配置文件顯示配置秘鑰
使用Jasypt來加密和解密
1、添加Jasypt依賴
在pom.xml文件中添加Jasypt依賴:
<dependency> <groupId>org.jasypt</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
2、獲取加密后的字符串
在線網(wǎng)站:https://new.lxc1314.xyz/
3、在配置文件中使用加密后的密碼
在application.properties或application.yml中使用加密后的密碼,格式為ENC(加密后的密碼)。例如:
spring.datasource.password=ENC(1WqJf1V5n1R4n5v2k3P4q5I7r2Q3u5Q1)
4、在安裝的時候向環(huán)境變量中配置解密密碼和鹽值
export JASYPT_ENCRYPTOR_PASSWORD=mySecretPassword export JASYPT_ENCRYPTOR_IV_GENERATOR_CLASSNAME=org.jasypt.iv.RandomIvGenerator
5、java 命令啟動時傳入jasypt.encryptor.password 和 jasypt.encryptor.iv-generator-classname
java -jar myapp.jar -Djasypt.encryptor.password=$JASYPT_ENCRYPTOR_PASSWORD -Djasypt.encryptor.iv-generator-classname=org.jasypt.iv.RandomIvGenerator
密碼加密的使用
1.在需要加密的配置文件使用ENC(加密后的密碼)
2.獲取加密后的密碼方法
private static final String ALGORITHM_INFO = "PBEWithMD5AndDES"; private static final String PASSWORD_INFO = "WyAh5C8l9qWSGHMpda1lsIRkvhvpyDH1"; @GetMapping("/encryptPwd") public void encryptPwd() { StandardPBEStringEncryptor standardPBEStringEncryptor = new StandardPBEStringEncryptor(); //配置文件中配置如下的算法 standardPBEStringEncryptor.setAlgorithm(ALGORITHM_INFO); //配置文件中配置的password standardPBEStringEncryptor.setPassword(PASSWORD_INFO); //要加密的文本 String name = standardPBEStringEncryptor.encrypt("abababa"); String password = standardPBEStringEncryptor.encrypt("e022f87539fd81f3"); String redisPassword = standardPBEStringEncryptor.encrypt("gbasedbt123"); String redisPassword2 = standardPBEStringEncryptor.encrypt("abababa"); String redisPassword3 = standardPBEStringEncryptor.encrypt("123456"); String redisPassword4 = standardPBEStringEncryptor.encrypt("6a3d373e077b41b5a1c53f993c4fdc80"); String oppeer= standardPBEStringEncryptor.encrypt("oppeer"); String ddlla= standardPBEStringEncryptor.encrypt("ddlla"); String nacos = standardPBEStringEncryptor.encrypt("nacos"); //將加密的文本寫到配置文件中 System.out.println("【abababa】=" + name); System.out.println("【e022f87539fd81f3】=" + password); System.out.println("【gbasedbt123】=" + redisPassword); System.out.println("【abababa】=" + redisPassword2); System.out.println("【123456】=" + redisPassword3); System.out.println("【6a3d373e077b41b5a1c53f993c4fdc80】=" + redisPassword4); System.out.println("【oppeer】=" + oppeer); System.out.println("【ddlla】=" + ddlla); System.out.println("【nacos】=" + nacos); //要解密的文本 *//* String name2 = standardPBEStringEncryptor.decrypt("3U+OHwCEJvWNCnjV6iVYvMxYYcJTxJpoQchB4/ttEsV5YdHI9jFW8S92KiTI6yLk"); String password2 = standardPBEStringEncryptor.decrypt("0PbODjzlXKy2a0Ijag3oEFqmvRpUl736GVkh55sY4SmTk5Nl1FzxpETEScFtL47W"); // String redisPassword2 = standardPBEStringEncryptor.decrypt("ZII7UphhbVuJ8c3oxPUeyw=="); //解密后的文本 System.out.println("name2=" + name2); System.out.println("password2=" + password2);*//* }
兩種配置文件密碼加密方案,一種是在配置文件中添加jasypt引用并加入jasypt配置,另一種是使用配置類加載bean進行加解密。加密后的密碼可以在配置文件中使用ENC(加密后的密碼)獲取。其中使用的加密算法是PBEWithMD5AndDES,密鑰為WyAh5C8l9qWSGHMpda1lsIRkvhvpyDH1。可以通過訪問/encryptPwd來獲取加密后的密碼。
到此這篇關(guān)于SpringBoot配置文件密碼加密的三種方案的文章就介紹到這了,更多相關(guān)SpringBoot配置文件密碼加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 實戰(zhàn)項目之CRM客戶管理系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+SSM+jsp+mysql+maven實現(xiàn)一個CRM客戶管理系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11Spring Boot 中的 CommandLineRunner 原理及使用示例
CommandLineRunner 是 Spring Boot 提供的一個非常有用的接口,可以幫助你在應(yīng)用程序啟動后執(zhí)行初始化任務(wù),本文通過多個示例詳細介紹了如何在實際項目中使用 CommandLineRunner,感興趣的朋友一起看看吧2025-04-04