Java使用jasypt配置文件加密方式

 更新时间:2026年05月12日 09:14:40   作者:努力的小玖心  
本文介绍了使用POM文件引入加密插件对配置文件内容进行加密的方法,将加密内容替换为ENC()格式,项目启动时自动解密;并提供了一种动态密钥的方法,避免每个项目单独写加解密程序

1.pom文件引入

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

2.对配置文件内容加密生成加密串

@SpringBootTest
public class JasyptSpringIntegrationTest {

    @Autowired
    private StringEncryptor encryptor; // 自动注入 Jasypt 加密器

    @Test
    public void testEncryptorBean() {
        //加密数据
        System.out.println(encryptor.encrypt("jdbc:postgresql://192.168.1.146:5000/cme_guide?stringtype=unspecified&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai"));
        System.out.println(encryptor.encrypt("postgres"));
        System.out.println(encryptor.encrypt("etetyadsjhsasd@3$"));
        System.out.println(encryptor.encrypt("jdbc:postgresql://192.168.1.146:5001/cme_guide?stringtype=unspecified&useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai"));
        String encryptStr = encryptor.encrypt("postgres");
        String decryptStr = encryptor.decrypt(encryptStr);
        //校验加密前后密钥是否相等
        assertEquals("postgres", decryptStr);
    }
}

3.配置文件要加密的内容替换为ENC(),新增一个加密密钥

spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: org.postgresql.Driver
    druid:
      # 主库数据源
      master:
        url: ENC(O6PmZNFcRxoRCc39Ii4JhKqSDaacM9kavIWs1ryK148cScuayYfOchNM+l14F4DGKi7GnxQNfDuUQsLJPyOcP99oZEmLDhCNSe9+iH9K3AnebsSBqCfzgwcyBuDq9beFFLd62vmpXwgerxc27Jeakcp4rwCl5zE8kK/iA2aPda2Qx3LFAvx+OJfZKKzD2QP2VLG5tzbt60QiN8n40xJEhZHyqAwCk9nyIu7HXVULvBptiQ53pJMUAtqo4tolD0POLh29FYz6tDyOBXimy9q5vw==)
        username: ENC(m/QoMK4ImE31eW6d7U96XBsW7J8xnGxKxELpcQ70LwGdHnRI49J0KSxQo0G43dBa)
        password: ENC(BHkWbTNCuCjLkuyLb0Xoxh5oNFyYoBKpTv61OMnXNkUBelTkWVkIDcD3nZG3Gn9l)
# 配置加密密钥
jasypt:
  encryptor:
    password: ${SECRET_PASSWORD}

备注:

jdk8版本别太低,我使用的1.8.0_381,项目启动会自行对ENC加密的数据进行解密,可以单写一个加解密的程序(动态密钥),就不用每个项目都写test去加解密了

总结

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

相关文章

  • MyBatis事务管理模块详解

    MyBatis事务管理模块详解

    本文主要介绍了MyBatis事务管理模块详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-02-02
  • 详解如何用Java去除HTML标签

    详解如何用Java去除HTML标签

    在平时工作中,偶尔会用 Java 做一些解析HTML的工作。有时需要删除所有的HTML标签,只保留纯文字内容。这个问题在做过一些爬虫工作的朋友来说很简单。下面来说说,我们平时使用到的集中解析的方法
    2022-12-12
  • SpringAOP中@Pointcut的用法详解

    SpringAOP中@Pointcut的用法详解

    这篇文章主要介绍了SpringAOP中@Pointcut的用法详解,Pointcut(切点)是面向切面编程中的一个非常重要的概念,此概念由spring框架定义,Pointcut只是一种筛选规则,需要的朋友可以参考下
    2023-08-08
  • Java输入学号、姓名、年龄并对其进行输出的实现方法

    Java输入学号、姓名、年龄并对其进行输出的实现方法

    这篇文章主要给大家介绍了关于Java输入学号、姓名、年龄并对其进行输出的实现方法,在计算机编程中,输出学号和姓名是一个常见的任务,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • mybatis 拦截器添加参数的实现

    mybatis 拦截器添加参数的实现

    本文主要介绍了MyBatis拦截器中添加参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • 分布式组件Gateway技术栈系统性理解和操作

    分布式组件Gateway技术栈系统性理解和操作

    这篇文章主要介绍了分布式组件Gateway技术栈系统性理解和操作,要真正理解和使用Gateway技术栈,需要从架构认知、核心机制、实践应用三个维度建立系统性理解,需要的朋友可以参考下
    2026-02-02
  • java对象转成byte数组的3种方法

    java对象转成byte数组的3种方法

    这篇文章主要为大家详细介绍了java对象转成byte数组的3种方法,具有一定的参考价值,感兴趣的朋友可以参考一下
    2018-06-06
  • 最详细的文件上传下载实例详解(推荐)

    最详细的文件上传下载实例详解(推荐)

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现。非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07
  • Java键值操作MapUtils的使用小结

    Java键值操作MapUtils的使用小结

    在Java开发中,键值操作是日常工作中不可或缺的一部分,本文主要介绍MapUtils 以org.apache.commons.collections4.MapUtils 为例的工具类实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • 利用Java实现读写bmp文件的示例代码

    利用Java实现读写bmp文件的示例代码

    位图(Bitmap,BMP)是一种最原始、最简单的图像文件格式,由微软和 IBM 在 1980 年代联合制定,用于 Windows 操作系统,本项目旨在用纯 Java 从零实现一个轻量级的 BMP 文件读写库,需要的朋友可以参考下
    2025-05-05

最新评论