SpringBoot使用除了Jasypt对YML文件配置内容进行加密方式

 更新时间:2025年11月25日 09:22:05   作者:℡才知道  
文章介绍了如何在Java项目中使用Jasypt进行加密和解密,包括在pom.xml中添加依赖、在application.yml中配置信息、创建解密Bean以及确保秘钥和算法的一致性

1. 在pom.xml中添加Jasypt依赖

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

2. 加密算法

      // 1. 创建对象
      PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
      // 2. 加密配置
      SimpleStringPBEConfig config = new SimpleStringPBEConfig();
      // 秘钥
      config.setPassword("your-secret-key");
      // 3. 加密算法,需要与解密算法一致
      config.setAlgorithm("PBEWithMD5AndDES");
      // 为减少配置文件的书写,以下都是 Jasyp 3.x 版本,配置文件默认配置
      config.setKeyObtentionIterations( "1000");
      config.setPoolSize("1");
      config.setProviderName("JC");
      config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
      config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
      config.setStringOutputType("base64");
      encryptor.setConfig(config);
      //需要加密的字符串
      System.out.println( encryptor.encrypt("需加密的字符串"));

加密后的字符串


3. 在application.yml中配置加密相关信息

使用ENC(加密字符串)

	url: jdbc:mysql://ip:port/test
	username: root
	password: ENC(w8bH76qYHSgDuxbwK0HsgPbmWZZMoxyVo0DvkOPSiY4=)

4. 配置的两种方式

配置解密Bean并注入(硬编码) 或 在Yml配置Jasypt(推荐)

4.1.1 配置Bean

@Configuration
@EnableEncryptableProperties
public class CustomEncryptConfig {
    @Bean(name = "customStringEncryptor")
    public  static StringEncryptor stringEncryptor() {
        PooledPBEStringEncryptor encryptor = new PooledPBEStringEncryptor();
        // 2. 加解密配置
        SimpleStringPBEConfig config = new SimpleStringPBEConfig();
        config.setPassword("your-secret-key");
        // 3. 解密算法,必须与加密算法一致
        config.setAlgorithm("PBEWithMD5AndDES");
        // 为减少配置文件的书写,以下都是 Jasyp 3.x 版本,配置文件默认配置
        config.setKeyObtentionIterations( "1000");
        config.setPoolSize("1");
        config.setProviderName("JC");
        config.setSaltGeneratorClassName("org.jasypt.salt.RandomSaltGenerator");
        config.setIvGeneratorClassName("org.jasypt.iv.NoIvGenerator");
        config.setStringOutputType("base64");
        encryptor.setConfig(config);
        return encryptor;
    }
}

4.1.2 启动类中配置 jasypt.encryptor.bean

customStringEncryptor为上一步配置的Bean

@SpringBootApplication
public class SpringBootTestApplication
{
    public static void main(String[] args)
    {
        System.setProperty("jasypt.encryptor.bean", "customStringEncryptor");
        SpringApplication.run(SnSkApplication.class, args);
    }
}

4.2.1 启动类中配置 jasypt.encryptor.bean

customStringEncryptor为上一步配置的Bean

jasypt:
  encryptor:
    algorithm: PBEWithMD5AndDES //PBEWITHHMACSHA512ANDAES_256更安全
    iv-generator-classname: org.jasypt.iv.NoIvGenerator
    password: your-secret-key

4.2.2 配置服务器运行参数

java -Xms256M -Xmx256M -jar / java/app.jar --jasypt.encryptor.password=xxxxx

但是如果我们配置了password值,就需要在启动类加上@EnableEncryptableProperties这个注解,用于自动解密。

5. 注意

代码加密时的秘钥和算法必须和配置的相同

1. 必须和在Bean中配置的秘钥和算法 一致对应

2. 必需在Yml中的jasypt.encryptor.password 和 jasypt.encryptor.algorithm 一致对应

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring实现声明式事务的方法详解

    Spring实现声明式事务的方法详解

    这篇文章主要介绍了Spring实现声明式事务的方法详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • JPA的多表复杂查询的方法示例

    JPA的多表复杂查询的方法示例

    这篇文章主要介绍了JPA的多表复杂查询的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Java程序开发中abstract 和 interface的区别详解

    Java程序开发中abstract 和 interface的区别详解

    abstract class和interface在Java语言中都是用来进行抽象类。但是两者有什么区别呢,接下来小编给大家带来了abstract 和 interface的区别详解,感兴趣的朋友一起学习吧
    2016-06-06
  • SpringBoot使用TraceId实现日志链路追踪的步骤

    SpringBoot使用TraceId实现日志链路追踪的步骤

    本文介绍了如何实现服务调用的日志链路追踪,包括整合logback打印traceId、配置日志文件、通过MDC传递追踪ID,并重写线程池方法以保证异步和定时任务线程的traceId传递,实现高效日志查找和追踪,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • Java用POI解析excel并获取所有单元格数据的实例

    Java用POI解析excel并获取所有单元格数据的实例

    下面小编就为大家带来一篇Java用POI解析excel并获取所有单元格数据的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • Java基于Base64实现编码解码图片文件

    Java基于Base64实现编码解码图片文件

    这篇文章主要介绍了Java基于Base64实现编码解码图片文件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • SpringBoot配置Actuator组件,实现系统监控

    SpringBoot配置Actuator组件,实现系统监控

    在生产环境中,需要实时或定期监控服务的可用性。Spring Boot的actuator(健康监控)功能提供了很多监控所需的接口,可以对应用系统进行配置查看、相关功能统计等。
    2021-06-06
  • springbatch的封装与使用实例详解

    springbatch的封装与使用实例详解

    主要实现批量数据的处理,我对batch进行的封装,提出了jobBase类型,具体job需要实现它即可。这篇文章主要介绍了springbatch的封装与使用 ,需要的朋友可以参考下
    2019-04-04
  • 解决IDEA删除子模块并重建后MAVEN无法识别的问题

    解决IDEA删除子模块并重建后MAVEN无法识别的问题

    这篇文章主要介绍了解决IDEA删除子模块并重建后MAVEN无法识别的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • 比较java中Future与FutureTask之间的关系

    比较java中Future与FutureTask之间的关系

    在本篇文章里我们给大家分享了java中Future与FutureTask之间的关系的内容,有需要的朋友们可以跟着学习下。
    2018-10-10

最新评论