SpringBoot配置文件密码加密的三种方案

 更新时间:2024年04月18日 08:59:26   作者:SevenBean  
这篇文章主要介绍了SpringBoot配置文件密码加密的三种方案,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

配置文件密码加密的3种方案

一.配置文件添加jasypt

1.pom.xml添加jasypt引用

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

2.在springboot配置文件内加入 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、获取加密后的字符串

在线网站: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来获取加密后的密码。

到此这篇关于SpringBoot配置文件密码加密的三种方案的文章就介绍到这了,更多相关SpringBoot配置文件密码加密内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Eclipse添加xml文件提示及Hibernate配置学习

    Eclipse添加xml文件提示及Hibernate配置学习

    文件提示功能在开发过程中很实用的,本文实现了一个Eclipse添加xml文件提示,感兴趣的朋友可以了解下啊,希望本文对你有所帮助
    2013-01-01
  • Spring Security介绍及配置实现代码

    Spring Security介绍及配置实现代码

    Spring Security是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorization)的支持,这篇文章给大家介绍Spring Security介绍及配置实现代码,感兴趣的朋友一起看看吧
    2025-05-05
  • Idea如何配置Maven才能优先从本地仓库获取依赖(亲测方法有效)

    Idea如何配置Maven才能优先从本地仓库获取依赖(亲测方法有效)

    对于Idea怎么配置Maven才能优先从本地仓库获取依赖,网上说法有很多种,都不太靠谱,最终都没有效果,最好的解决方法是通过修改maven配置文件settings.xml,本文给大家介绍的非常详细,需要的朋友参考下吧
    2023-10-10
  • java内存模型jvm虚拟机简要分析

    java内存模型jvm虚拟机简要分析

    Java 内存模型的主要目的是定义程序中各种变量的访问规则, 关注在虚拟机中把变量值存储到内存和从内存中取出变量值这样的底层细节
    2021-09-09
  • 使用IDEA画UML图的详细步骤

    使用IDEA画UML图的详细步骤

    UML是面向对象设计的建模工具,独立于任何具体程序设计语言,是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,本文重点给大家介绍使用IDEA画UML图的详细步骤,需要的朋友参考下吧
    2021-06-06
  • Java精品项目瑞吉外卖之员工新增篇

    Java精品项目瑞吉外卖之员工新增篇

    这篇文章主要为大家详细介绍了java精品项目-瑞吉外卖订餐系统,此项目过大,分为多章独立讲解,本篇内容为新增员工功能的实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 使用Java打造交互式Excel仪表板

    使用Java打造交互式Excel仪表板

    如果你经常做数据分析报表,一定见过这种场景:一个Excel表格里塞满了数据,老板想看某个地区、某个月份的数据,你得手动筛选半天,切片器是Excel 2010引入的一个超实用功能,本质上就是可视化的筛选器,今天我来分享一下如何用Java代码给Excel添加切片器,需要的朋友可以参考下
    2026-05-05
  • Servlet实现多文件上传功能

    Servlet实现多文件上传功能

    这篇文章主要为大家详细介绍了Servlet实现文件上传功能,还可以实现Servlet多文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • springboot如何实现前后端分离跨域访问

    springboot如何实现前后端分离跨域访问

    这篇文章主要介绍了springboot如何实现前后端分离跨域访问问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • MyBatis拦截器动态替换表名的方法详解

    MyBatis拦截器动态替换表名的方法详解

    因为我们持久层框架更多地使用MyBatis,那我们就借助于MyBatis的拦截器来完成我们的功能,这篇文章主要给大家介绍了关于MyBatis拦截器动态替换表名的相关资料,需要的朋友可以参考下
    2022-04-04

最新评论