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 一致对应

总结

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

相关文章

  • SpringBoot使用flyway初始化数据库

    SpringBoot使用flyway初始化数据库

    这篇文章主要介绍了SpringBoot如何使用flyway初始化数据库,帮助大家更好的理解和学习使用SpringBoot框架,感兴趣的朋友可以了解下
    2021-03-03
  • SpringBoot整个启动过程的分析

    SpringBoot整个启动过程的分析

    今天小编就为大家分享一篇关于SpringBoot整个启动过程的分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • SpringCloud解决Feign异步回调问题(SpringBoot+Async+Future实现)

    SpringCloud解决Feign异步回调问题(SpringBoot+Async+Future实现)

    这篇文章主要介绍了SpringCloud解决Feign异步回调问题(SpringBoot+Async+Future实现),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Java面试题冲刺第一天--基础篇1

    Java面试题冲刺第一天--基础篇1

    这篇文章主要为大家分享了最有价值的三道java面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Spring Boot 项目集成 Redisson 实现延迟队列的详细过程

    Spring Boot 项目集成 Redisson 实现延迟队列的详细过程

    本文介绍延迟队列在订单超时等场景的应用及四种技术方案对比,推荐Redisson延迟队列,提供项目结构与测试源码,对Spring Boot  Redisson延迟队列相关知识感兴趣的朋友一起看看吧
    2025-06-06
  • idea 无法创建Scala class 选项的原因分析及解决办法汇总

    idea 无法创建Scala class 选项的原因分析及解决办法汇总

    这篇文章主要介绍了idea 无法创建Scala class 选项的解决办法汇总,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java查询缓存之优化重复查询的执行效率问题

    Java查询缓存之优化重复查询的执行效率问题

    这篇文章主要介绍了Java查询缓存之优化重复查询的执行效率问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • SpringBoot中的ThreadLocal保存请求用户信息的实例demo

    SpringBoot中的ThreadLocal保存请求用户信息的实例demo

    线程局部变量,创建一个线程变量后,针对这个变量可以让每个线程拥有自己的变量副本,每个线程是访问的自己的副本,与其他线程的相互独立,本文介绍SpringBoot中的ThreadLocal保存请求用户信息,需要的朋友可以参考下
    2024-05-05
  • Java单例模式的五种实现方式

    Java单例模式的五种实现方式

    单例模式(Singleton Pattern)是Java中最简单的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式,下面这篇文章主要给大家介绍了关于Java单例模式的五种实现方式 ,需要的朋友可以参考下
    2022-06-06
  • Java中断线程的方法

    Java中断线程的方法

    这篇文章主要介绍了Java中断线程的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-05-05

最新评论