Spring Boot 配置文件敏感信息加密(Jasypt 企业级完整方案)

Jasypt 开源加密库使用教程 Jasypt 加密框架概述 1、Jasypt Spring Boot 为 spring boot 应用程序中的属性源提供加密支持,出于安全考虑,Spring boot 配置文件中的敏感信息通常需要对它进行加密/脱敏处理,尽量不使用明文,要实现这一点,办法有很多,自己手动对敏感信息进行加解密也是可以的。 2、有需求就有人奉献,Jasypt 开源安全框架就是专门用于处理 Spring boot 属性加密的,在配置文件中直接配置密文,然后应用启动的时候,Jasypt 会自动将密码解密成明文供程序使用。 3、 阅读详情

Spring Boot 配置文件敏感信息加密(Jasypt 企业级完整方案)

一、前言

Spring Boot 项目中,application.yml、application.properties 配置文件会存储大量敏感信息,包括数据库账号密码、Redis 密码、接口密钥、短信/OSS 秘钥等。

如果以明文存储,一旦代码仓库泄露、服务器文件被窃取,会造成核心数据安全事故。因此生产环境必须对配置文件敏感信息加密存储。

本文采用行业通用方案:Jasypt,无侵入、开箱即用,支持 Spring Boot 自动解密,适配所有配置项,是中小型项目首选安全方案。

二、Jasypt 方案优势

  • 零业务代码侵入,仅修改配置文件

  • 项目启动自动解密,业务层无需手动处理

  • 支持 AES 高强度加密算法,安全性高

  • 支持环境变量、启动参数传递密钥,避免密钥硬编码

  • 兼容 yml、properties 所有配置文件

三、版本依赖引入

适配 Spring Boot2.x / 3.x,引入 Jasypt 官方启动器。

3.1 Maven 依赖(pom.xml)

<!-- Spring Boot 配置文件加密 Jasypt -->
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.5</version>
</dependency>

版本说明:3.0.5 兼容 Spring Boot 2.7+、3.x 全版本,稳定无兼容问题。

四、生成密文(核心步骤)

需要先将明文密码、密钥通过 Jasypt 算法加密为密文,提供三种常用生成方式,推荐代码工具类生成(最稳定)。

4.1 自定义工具类生成密文(推荐)

编写测试工具类,指定加密密钥和明文,生成可直接使用的密文。

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.encryption.pbe.config.EnvironmentPBEConfig;

/**
 * Jasypt 加解密工具类
 * 用于生成配置文件密文、测试解密
 */
public class JasyptUtil {

    // 自定义加密密钥(生产环境务必更换复杂密钥)
    private static final String SECRET_KEY = "SpringBoot@2026";

    public static void main(String[] args) {
        // 需要加密的明文(数据库密码、Redis密码等)
        String plainText = "123456";

        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        EnvironmentPBEConfig config = new EnvironmentPBEConfig();
        config.setPassword(SECRET_KEY);
        // 使用高强度AES加密算法
        config.setAlgorithm("PBEWITHHMACSHA512ANDAES_256");
        config.setIvGeneratorClassName("org.jasypt.iv.RandomIvGenerator");
        encryptor.setConfig(config);

        // 加密
        String cipherText = encryptor.encrypt(plainText);
        // 解密(验证用)
        String decryptText = encryptor.decrypt(cipherText);

        System.out.println("明文:" + plainText);
        System.out.println("密文:ENC(" + cipherText + ")");
        System.out.println("解密验证:" + decryptText);
    }
}

运行 main 方法,即可生成 ENC(密文) 格式字符串,直接放入配置文件即可。

4.2 IDEA 插件 / 在线工具(临时使用)

开发测试可使用 Jasypt 在线加解密工具,输入明文和自定义密钥,快速生成密文,生产环境禁止使用在线工具,避免密钥泄露。

五、配置文件改造(YML / Properties)

Jasypt 默认规则:所有被 ENC() 包裹的内容,项目启动时自动解密。

5.1 application.yml 配置

# Jasypt 加密配置
jasypt:
  encryptor:
    # 加密密钥(生产环境通过环境变量/启动参数注入,不硬编码)
    password: ${JASYPT_ENCRYPTOR_PASSWORD:}
    # 加密算法
    algorithm: PBEWITHHMACSHA512ANDAES_256
    iv-generator-class-name: org.jasypt.iv.RandomIvGenerator

# 数据库配置(敏感信息加密)
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test_db?useUnicode=true&characterEncoding=utf-8
    username: ENC(xxxx密文xxxx)
    password: ENC(xxxx密文xxxx)

# Redis 配置
redis:
  password: ENC(xxxx密文xxxx)

5.2 application.properties 配置

# Jasypt 配置
jasypt.encryptor.password=${JASYPT_ENCRYPTOR_PASSWORD:}
jasypt.encryptor.algorithm=PBEWITHHMACSHA512ANDAES_256
jasypt.encryptor.iv-generator-class-name=org.jasypt.iv.RandomIvGenerator

# 数据库配置
spring.datasource.username=ENC(xxxx密文xxxx)
spring.datasource.password=ENC(xxxx密文xxxx)

六、密钥安全注入(生产核心)

绝对禁止将加密密钥硬编码在配置文件中,否则加密无意义。生产环境提供两种安全注入方式。

6.1 启动参数传递(推荐)

项目启动时通过命令行传入密钥,密钥不落地、不提交代码库。

java -jar your-project.jar --jasypt.encryptor.password=自定义复杂密钥

6.2 系统环境变量传递

服务器提前配置环境变量 JASYPT_ENCRYPTOR_PASSWORD,项目自动读取。

# Linux 临时配置
export JASYPT_ENCRYPTOR_PASSWORD=自定义复杂密钥

# 启动项目
java -jar your-project.jar

七、解密验证测试

编写测试接口,验证配置是否正常解密,确保项目可正常读取明文配置。

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigTestController {

    @Value("${spring.datasource.password}")
    private String dbPassword;

    @GetMapping("/config/test")
    public String test() {
        return "数据库密码解密后明文:" + dbPassword;
    }
}

启动项目访问接口,能正常输出明文密码,说明加解密配置生效。

八、常见问题与避坑指南

8.1 启动报错:Invalid key size

原因:JDK 默认密钥长度受限,不支持 256 位 AES 加密

解决方案:使用 Jasypt 3.0+ 版本,自动兼容无限制密钥,无需手动替换 JCE 包。

8.2 密钥配置后解密失败

  • 加密、解密必须使用同一个密钥、同一个算法

  • 密文禁止手动修改、空格、换行

  • 确认启动时成功注入密钥,无参数覆盖

8.3 代码提交安全问题

配置文件只提交密文,密钥通过启动参数/环境变量注入,彻底杜绝密钥泄露。

九、高级扩展(企业级优化)

9.1 自定义加密标识

默认使用 ENC(),可自定义前后缀,避免冲突。

jasypt:
  encryptor:
    prefix: CIPHER(
    suffix: )

9.2 配合 Nacos / Apollo 配置中心

Jasypt 完全兼容分布式配置中心,配置中心存储密文,本地启动注入密钥,兼顾配置统一和数据安全。

十、总结

  1. Jasypt 是 Spring Boot 配置加密最优轻量方案,零侵入、高安全、易落地;

  2. 核心规范:配置文件存密文,密钥动态注入,绝不硬编码;

  3. 所有数据库、中间件、接口秘钥必须加密存储,杜绝明文泄露风险;

  4. 生产环境必须使用启动参数/环境变量传递密钥,禁止写死在项目配置中。

Jasypt加密/解密工具嵌入Spring boot框架的使用教程 Jasypt (Java Simplified Encryption) 是一个开源的Java库,专注于简化加解密过程,特别适合在Java应用程序中处理敏感数据,如密码、密钥或任何其他需要保护的信息。Jasypt的目标是提供一个易于使用的API,使得开发者能够轻松地集成加密功能,而不必成为加密专家。 阅读详情

相关推荐

加密--01--Jasypt加密/解密工具

在大多数项目中,配置文件中的 mysql 数据库密码、redis 密码等其他敏感性密码都是以明文形式存在,这种配置本身没有任何问题,但是,在某些情况下,可能会对公司造成不可挽救的损失,比如:某一天,小明因为加班过度,头脑发昏,不小心把公司项目上传到自己的GitHub 仓库里面了,导致的后果就是,公司数据库用户名密码泄露,被某些大佬加以利用…所以,基于上面这种情况,加入配置文件中数据库用户密码等其他敏感信息都是经过加密处理过的呢???是不是可以大概率避免这种情况。Jasypt因此应运而生。

时光里的博客 4423

小白入门之 Jasypt 加密和解密

文章目录摘要Jasypt 简介Jasypt 特征下载 JasyptJasypt 环境依赖要求Jasypt 用法简单用法:utils一般用法使用精简版 Jasypt从命令行加密:Jasypt CLI 工具高级用法加密器和摘要器的高级配置Web PBE Configuration将 Jasypt 与非默认 JCE 提供程序一起使用按日期类型Encrypting passwordsEncrypting textsEncrypting numbersEncrypting binariesEncrypting app

Gjw_java的博客 2万+

Jasypt 与 Spring Boot 集成文档

Jasypt 是一个简单易用的 Java 加密库,支持与 Spring Boot 无缝集成。通过 Jasypt,可以轻松加密和解密 Spring Boot 配置文件中的敏感信息(如数据库密码、API 密钥等),从而提高应用的安全性。默认情况下,Jasypt 使用算法。可以通过以下配置自定义算法:为了进一步防止密码泄露,我们可以自定义加密规则。自定义加密规则非常简单,只需要提供自定义的加密器配置类,然后通过配置指定加密配置类即可。/*** 自定义加密器*//*** 加解密PBE 算法*/

The Fifth Leaf 的博客 2814

Jasypt实现数据加解密(脱敏)

场景一:对配置文件中的裸露的密码进行加密 1、添加依赖 <dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.4</version>

smiling 1万+

spring boot 中使用jasypt 对配置文件里信息进行加密

博客参考:springboot集成jasypt实现配置文件敏感信息加密,详细! Spring Boot使用jasypt处理加密问题   ​​​​​1、pom.xml 引入jar包,我这里使用的spring boot  1.5.10.RELEASE &lt;dependency&gt; &lt;groupId&gt;com.github.ulisesbocchio&lt;/groupId...

dreaming_open的博客 5440

SpringBoot使用Jasypt对配置文件加密、数据库密码加密_jasypt对springboot配置文件加密的使用

Jasypt是一个Java简易加密库,用于加密配置文件中的敏感信息,如数据库密码。jasypt库与springboot集成,在实际开发中非常方便。1、Jasypt Spring Boot 为 spring boot 应用程序中的属性源提供加密支持,出于安全考虑,Spring boot 配置文件中的敏感信息通常需要对它进行加密/脱敏处理,尽量不使用明文,要实现这一点,办法有很多,自己手动对敏感信息进行加解密也是可以的。

2501_90405033的博客 1003

​Spring Boot 配置文件敏感信息加密:Jasypt 实战

在SpringBoot项目中,敏感信息如数据库密码、APIKey等通常直接存储在配置文件中,存在代码泄露、运维风险和合规性要求等安全隐患。为解决这些问题,可以使用Jasypt(Java Simplified Encryption)对敏感信息进行加密,并在运行时自动解密。集成Jasypt的步骤包括添加Maven依赖、生成加密字符串、配置密钥和算法,并在启动文件中启用加密属性。为确保安全,密钥应通过环境变量或启动参数动态注入,避免直接写在配置文件中。

weixin_74120671的博客 2368

Spring Boot配置文件加密实战:基于Jasypt的YAML敏感信息保护方案

在企业级应用开发中,配置管理是保障系统安全的重要环节。配置文件作为应用的核心信息载体,常包含数据库连接、API密钥等敏感数据,其明文存储会带来严重的安全风险。从技术原理层面,对称加密(如AES)和非对称加密(如RSA)是保护敏感信息的两种主要手段,前者适合大量数据的快速加解密,后者则在密钥安全分发方面更具优势。在实际工程实践中,结合两者优势的混合加密模式常被采用,即用对称加密算法处理配置值,再用非对称加密保护对称密钥。这种方案的技术价值在于,它能在不显著影响性能的前提下,为配置信息提供端到端的保护,有效防止

weixin_33924770的博客 412

【Jasypt】Spring Boot 配置文件加解密 Jasypt 配置文件加密

Jasypt是一个Java简易加密库,用于加密配置文件中的敏感信息,如数据库密码。jasypt库与springboot集成,在实际开发中非常方便。1、Jasypt Spring Boot 为 spring boot 应用程序中的属性源提供加密支持,出于安全考虑,Spring boot 配置文件中的敏感信息通常需要对它进行加密/脱敏处理,尽量不使用明文,要实现这一点,办法有很多,自己手动对敏感信息进行加解密也是可以的。

No8g攻城狮的博客 1万+

Spring Boot配置文件加密实战:从Jasypt到Vault的完整方案

在应用开发中,配置管理是保障系统安全的重要环节,尤其是涉及数据库密码、API密钥等敏感信息时,明文存储会带来严重的数据泄露风险。其核心原理是通过加密算法对敏感配置进行转换,确保即使配置文件被获取,攻击者也无法直接读取原始信息。这项技术的价值在于实现安全性与可用性的平衡,防止因代码泄露、服务器入侵或运维不当导致的核心凭证暴露。常见的应用场景包括微服务架构中的配置集中管理、CI/CD流水线的安全部署以及满足各类安全合规要求。本文聚焦于Spring Boot生态,深入探讨了Jasypt集成、自定义Environm

weixin_34320724的博客 371

Spring Boot配置文件敏感信息加密实践:Jasypt方案详解与安全强化

在软件开发中,配置管理是连接代码与运行环境的关键环节,而配置文件中的敏感信息保护则是安全体系的基石。其核心原理在于通过加密算法将明文信息转换为不可读的密文,实现敏感数据与代码的分离,从而在代码版本管理、构建部署等环节避免信息泄露。从技术价值看,这不仅提升了应用的整体安全性,也符合安全合规与审计要求。在实际应用场景中,数据库连接串、API密钥等敏感配置的加密是常见需求。本文聚焦于Spring Boot生态,深入解析如何利用Jasypt这一成熟工具实现配置加密,并探讨密钥管理、算法强化等工程实践,其中Jasyp

weixin_34221773的博客 372

使用jasypt在springboot中加密敏感信息

摘要: Jasypt是一个简化Java加密操作的轻量级库,支持与Spring Boot深度集成,通过ENC(密文)格式实现配置文件的自动加解密。其特点包括:支持AES-256等主流算法、分离式密钥管理(需通过环境变量/命令行注入)、提供Maven插件工具链。使用步骤:1) 引入Maven插件加密敏感数据;2) 在Spring Boot配置中以ENC()包裹密文;3) 运行时动态注入密钥。典型应用于数据库密码、API密钥保护及合规需求,强调密钥不可硬编码,需通过安全渠道传递。进阶配置支持算法、盐生成器等参数定

muyun2800的博客 7583

Spring Boot项目中使用Jasypt加密配置文件的完整指南

在Java应用开发中,配置文件中的敏感信息(如数据库密码、API密钥)的明文存储是常见的安全隐患。为了解决这一问题,开发者通常会采用属性加密技术,其核心原理是通过对称加密算法对敏感数据进行加密,在应用启动时再进行透明解密。这种技术能有效防止代码仓库泄露、配置泄露等安全风险,尤其适用于微服务架构和云原生环境。Jasypt(Java Simplified Encryption)作为一个轻量级Java加密库,通过提供简单的API和与Spring Boot的无缝集成,极大地简化了属性加密的实施过程。它支持基于密码的

weixin_30587927的博客 503

Spring Boot 配置文件敏感信息加密实战:基于 Jasypt 的全流程加密方案详解

本文介绍了在Spring Boot微服务架构中,如何通过Jasypt工具加密敏感配置信息。文章首先分析了明文配置的安全风险,然后详细讲解了Jasypt的集成方案,包括依赖引入、加密字符串生成、配置替换等步骤。重点强调了密钥管理的最佳实践,建议通过环境变量或专业密钥管理系统存储密钥。最后总结了完整的配置加密流程,并呼吁开发者建立安全意识,规范配置文件管理。该方案能有效防止敏感信息泄露,保障生产环境安全。

qq_46371374的博客 1516

Spring Boot配置文件加密实战:基于Jasypt的安全加固方案

在应用开发中,配置管理是连接代码与运行环境的关键环节,尤其涉及数据库连接、API密钥等敏感信息时,其安全性至关重要。其核心原理在于通过加密算法将明文配置转换为密文存储,在应用启动或运行时动态解密,从而避免敏感信息在代码仓库、日志或服务器中暴露。这项技术的核心价值在于以非侵入式的方式提升应用的整体安全基线,是DevSecOps实践中基础且必要的一步。典型的应用场景包括防止源码泄露导致凭证被盗、满足合规审计要求以及保障生产环境数据安全。本文聚焦于Spring Boot生态,深入解析如何利用Jasypt这一成熟库

dflkg8956的专栏 503

从仿真到真机:如何将XTDrone的VINS-Fusion+RTABMap建图方案部署到真实无人机上?

本文详细介绍了如何将XTDrone的VINS-Fusion+RTABMap建图方案从仿真环境迁移到真实无人机上。内容涵盖硬件选型、传感器配置、VINS-Fusion调优、RTABMap性能优化以及系统集成等关键步骤,特别针对三维稠密重建在真实环境中的挑战提供了实用解决方案。

weixin_29056781的博客 241

Spring Boot 3中使用Jasypt实现配置文件信息加密

Spring Boot 3中使用Jasypt实现配置文件信息加密

码海浮生,一个乐于分享的全栈工程师! 1349

Verilog的综合指令

Synopsys综合指令

烟花一时的博客 5441

Spring Boot 应用中,如何对配置文件的敏感信息进行加密

在 Spring Boot 应用中,对配置文件中的敏感信息(如数据库密码、API 密钥等)进行加密是保障应用安全的重要措施。以下介绍使用 Jasypt 对 Spring Boot 配置文件敏感信息进行加密的详细步骤,并附上完整代码示例。

m0_57836225的博客 1286

Trae+Playwright MCP自动化测试全流程指南:从环境搭建到智能体运行

本文提供了一份详细的Trae与Playwright MCP集成指南,涵盖从Node.js、Python环境搭建到智能体创建的全流程。通过结合MCP协议,AI智能体能够理解任务并驱动Playwright执行复杂的浏览器自动化操作,实现从网页数据抓取到端到端测试的智能工作流。

banana的博客 530

C#串口通讯实战:如何用SerialPort类搞定工业传感器数据采集(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现工业级传感器数据采集,涵盖串口通讯基础配置、数据帧处理、异常恢复机制及性能优化策略。通过实战代码示例,帮助开发者构建稳定可靠的工业数据采集系统,特别适合需要处理高频数据采集和复杂工业环境的场景。

weixin_42525551的博客 1084

使用jasypt 进行配置文件加密

springboot使用jasypt加密配置文件

crazyda的博客 1万+

VSCODE 安装LATEX环境,参数配置,常见问题解决

1 准备Texlive安装包 可以从以下网址下载 texlive 的镜像文件: 华为镜像 阿里镜像 官网 网址中大概文件构成 下载完后我们需要的文件构成(我是2020年下载过了,这次就不重新下载了) 将这个镜像文件进行解压 2 安装Texlive 右键install-tl-windows.bat,单击以管理员身份运行,进入安装界面. 点击左下角的“Advanced”进入高级安装来取消你不需要安装的宏包。 点击“Customize”来取消勾选不需要的宏包。 单是把非中英的语言包取消勾选可以省掉 1G

呆呆象呆呆的博客 6万+
上一篇: 基于Spring Boot的校园二手交易系统
码客日记
博客等级 码龄6年 149粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码客日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值