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 自動(dòng)配置加密信息
*//*
@Configuration
public class EncryptorConfig {
@Bean("jasyptStringEncryptor")
public StringEncryptor jasyptStringEncryptor() {
PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
SimpleStringPBEConfig config = new SimpleStringPBEConfig();
config.setPassword("WyYJ5C8l9qWSjkMpP2ilsIRkvhvp9wH4");
// 注釋部分為配置默認(rèn)
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、在安裝的時(shí)候向環(huán)境變量中配置解密密碼和鹽值
export JASYPT_ENCRYPTOR_PASSWORD=mySecretPassword export JASYPT_ENCRYPTOR_IV_GENERATOR_CLASSNAME=org.jasypt.iv.RandomIvGenerator
5、java 命令啟動(dòng)時(shí)傳入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進(jìn)行加解密。加密后的密碼可以在配置文件中使用ENC(加密后的密碼)獲取。其中使用的加密算法是PBEWithMD5AndDES,密鑰為WyAh5C8l9qWSGHMpda1lsIRkvhvpyDH1??梢酝ㄟ^訪問/encryptPwd來獲取加密后的密碼。
到此這篇關(guān)于SpringBoot配置文件密碼加密的三種方案的文章就介紹到這了,更多相關(guān)SpringBoot配置文件密碼加密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Eclipse添加xml文件提示及Hibernate配置學(xué)習(xí)
文件提示功能在開發(fā)過程中很實(shí)用的,本文實(shí)現(xiàn)了一個(gè)Eclipse添加xml文件提示,感興趣的朋友可以了解下啊,希望本文對你有所幫助2013-01-01
Spring Security介紹及配置實(shí)現(xiàn)代碼
Spring Security是一個(gè)功能強(qiáng)大的Java安全框架,它提供了全面的安全認(rèn)證(Authentication)和授權(quán)(Authorization)的支持,這篇文章給大家介紹Spring Security介紹及配置實(shí)現(xiàn)代碼,感興趣的朋友一起看看吧2025-05-05
Idea如何配置Maven才能優(yōu)先從本地倉庫獲取依賴(親測方法有效)
對于Idea怎么配置Maven才能優(yōu)先從本地倉庫獲取依賴,網(wǎng)上說法有很多種,都不太靠譜,最終都沒有效果,最好的解決方法是通過修改maven配置文件settings.xml,本文給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-10-10
springboot如何實(shí)現(xiàn)前后端分離跨域訪問
這篇文章主要介紹了springboot如何實(shí)現(xiàn)前后端分離跨域訪問問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
MyBatis攔截器動(dòng)態(tài)替換表名的方法詳解
因?yàn)槲覀兂志脤涌蚣芨嗟厥褂肕yBatis,那我們就借助于MyBatis的攔截器來完成我們的功能,這篇文章主要給大家介紹了關(guān)于MyBatis攔截器動(dòng)態(tài)替換表名的相關(guān)資料,需要的朋友可以參考下2022-04-04

