springboot 配置文件密码加密的3种方案
配置文件密码加密的3种方案
一.配置文件添加jasypt
1.pom.xml添加jasypt引用
com.github.ulisesbocchio
jasypt-spring-boot-starter
2.在springboot配置文件内加入 jasypt配置
jasypt:
encryptor:
algorithm: PBEWithMD5AndDES ##盐
password: dddda123 #密钥
二.使用配置类初始加载加解密
1.pom.xml添加jasypt依赖
com.github.ulisesbocchio
jasypt-spring-boot-starter
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依赖:
org.jasypt
jasypt-spring-boot-starter
3.0.3
2、获取加密后的字符串
在线网站:https://new.lxc1314.xyz/
3、在配置文件中使用加密后的密码
在application.properties或application.yml中使用加密后的密码,格式为ENC(加密后的密码)。例如:
spring.datasource.password=ENC(1WqJf1V5n1R4n5v2k3P4q5I7r2Q3u5Q1)
4、在安装的时候向环境变量中配置解密密码和盐值
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来获取加密后的密码。
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!
