使用jasypt对yml文件进行加密解密的实现

 更新时间:2025年11月25日 09:31:03   作者:避暑人  
文章介绍了如何使用jasypt对yml文件中的敏感信息进行加密,包括依赖设置、yml文件配置、加密操作步骤和注意事项,旨在提高开发过程中的安全性

在日常开发中,我们一般会把账号密码以及一些用到的各种第三方服务的Access_Key都放入yml文件中,这时就有必要对yml文件进行加密处理了,

jasypt是一款简单的对yml加密的工具

1.依赖

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

2.yml文件

server:
  port: 80

spring:
  application:
    name: demo

  # =========================== ↓↓↓↓↓↓ 配置数据源 ↓↓↓↓↓↓ ===========================
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/demo?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=false # MySQL在高版本需要指明是否进行SSL连接 解决则加上 &useSSL=false
    name: demo
    username: JASYPT_ZACK(wfv3a0rfjZkUPpLrRISeyg==)
    password: JASYPT_ZACK(wfv3a0rfjZkUPpLrRISeyg==)
    platform: mysql
    driver-class-name: com.mysql.jdbc.Driver

# 配置加密密钥
jasypt:
  encryptor:
    property:
      prefix: JASYPT_ZACK(   # TODO 加密前缀
      suffix: )            # TODO 加密后缀
    password: panghu    # TODO 加密密钥

这里的username和password都是以及加密完成的

需要用到密钥来进行解密,但是这个解密不需要我们来操作,我们只需要把原始值进行加密后填入就行了

3.加密操作

/**
 * <p> jasypt 加密/解密 测试类$ </p>
 * @description : 【 注:每次加密后的密码都不同,但根据密钥都能解析成原本的密码 】
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = DemoApplication.class)
public class JasyptTest {

    @Autowired
    StringEncryptor jasyptStringEncryptor;

    @Test
    public void encrypt() throws Exception {
        System.out.println("加密: " + jasyptStringEncryptor.encrypt("root"));
    }

    @Test
    public void decrypt() throws Exception {
        System.out.println("解密: " + jasyptStringEncryptor.decrypt("N/+f2B9SznK4MUDSp24Upw=="));
    }

    // ================ ↓↓↓↓↓↓ 下面为无需加载spring容器方式 ↓↓↓↓↓↓ ================

    @Test
    public void test() {
        // 对应配置文件中配置的加密密钥
        System.setProperty("jasypt.encryptor.password", "panghu");
        StringEncryptor stringEncryptor = new DefaultLazyEncryptor(new StandardEnvironment());
        System.out.println("加密: " + stringEncryptor.encrypt("root"));
        System.out.println("解密: " + stringEncryptor.decrypt("np9PjxccUFBZME5J4pl1Aw=="));
    }

}

总结

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

相关文章

  • MyBatisPlus之id生成策略的方法

    MyBatisPlus之id生成策略的方法

    本文主要介绍了MyBatisPlus之id生成策略的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • java 使用DecimalFormat进行数字的格式化实例详解

    java 使用DecimalFormat进行数字的格式化实例详解

    这篇文章主要介绍了java 使用DecimalFormat进行数字的格式化实例详解的相关资料,需要的朋友可以参考下
    2017-06-06
  • Java Lombok简介、使用、工作原理、优缺点

    Java Lombok简介、使用、工作原理、优缺点

    这篇文章主要介绍了Java Lombok简介、使用、工作原理、优缺点的相关资料,帮助大家更好的理解和学习使用Java Lombok,感兴趣的朋友可以了解下
    2021-03-03
  • 关于SpringBoot配置项的优先级,不再有配置不生效的问题

    关于SpringBoot配置项的优先级,不再有配置不生效的问题

    这篇文章主要介绍了关于SpringBoot配置项的优先级,不再有配置不生效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Java多线程中wait notify等待唤醒机制详解

    Java多线程中wait notify等待唤醒机制详解

    这篇文章主要介绍了Java多线程中wait notify等待唤醒机制,由于线程之间是抢占式执行的,因此线程的执行顺序难以预知,但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序,所以这里我们来介绍下等待唤醒机制,需要的朋友可以参考下
    2024-10-10
  • java实现图书馆管理系统

    java实现图书馆管理系统

    这篇文章主要为大家详细介绍了java实现图书馆管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Java文件操作之创建常规文件与临时文件

    Java文件操作之创建常规文件与临时文件

    这篇文章主要介绍了Java NNIO.中的Files.createFile()与Files.createTempFile()方法,用于创建常规文件和临时文件,总结了两种方法的特点、使用场景与区别,需要的朋友可以参考下
    2026-05-05
  • java读取文件:char的ASCII码值=65279,显示是一个空字符的解决

    java读取文件:char的ASCII码值=65279,显示是一个空字符的解决

    这篇文章主要介绍了java读取文件:char的ASCII码值=65279,显示是一个空字符的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • CountDownLatch源码解析之await()

    CountDownLatch源码解析之await()

    这篇文章主要为大家详细解析了CountDownLatch源码之await方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Java安全-ClassLoader

    Java安全-ClassLoader

    这篇文章主要介绍了Java安全ClassLoader,Java类初始化的时候会调用java.lang.ClassLoader加载字节码,ClassLoader就是用来动态加载class文件到内存当中用的,下面详细内容,需要的小伙伴可以参考一下
    2022-01-01

最新评论