SpringBoot3使用Jasypt实现加密配置文件

2025-03-23 14:50

本文主要是介绍SpringBoot3使用Jasypt实现加密配置文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《SpringBoot3使用Jasypt实现加密配置文件》这篇文章主要为大家详细介绍了SpringBoot3如何使用Jasypt实现加密配置文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编...

一. 使用步骤

1. 添加依赖

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version&gwww.chinasem.cnt;
</dependency>

2.配置加密密码

Jasypt需要一个密码来进行加密和解密操作。China编程可以通过以下几种方式配置这个密码:

在配置文件中指定 :在你的application.propertiesapplication.yml配置文件中,添加jasypt.encryptor.password配置项,并设置你的密码。例如:

# application.properties
jasypt.encryptor.password=your_encryption_password

或者,在application.yml中:

jasypt:
  encryptor:
    password: your_encryption_password

然而,将密码直接写在配置文件中可能存在安全风险。因此,更推荐的做法是通过启动参数或环境变量来传递这个密码。

通过启动参数指定:在启动应用程序时,可以通过

-Djasypt.encryptor.password=your_encryption_password参数来指定加密密码。

使用环境变量:在某些情况下,使用环境变量来存储敏感信息(如加密密码)可能更为安全。具体方法取决于你的应用程序部署环境。

3. 加密敏感信息

在配置加密密码后,你可以使用Jasypt提供的工具或API来加密你的敏感信息。加密后的信息将以密文形式存储。

使用Jasypt CLI工具Jasypt提供了一个命令行界面(CLI)工具,允许你在命令行中加密和解密字符串。你需要下载Jasyptjar包,并在命令行中运行相应的命令。

Jasypt JAR 文件下载地址 :

jasypt-1.9.3.jar

生成密钥

使用 Jasypt 提供的命令行工具生成密钥。

Java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your-strong-password" password="your-secret-key" algorithm=PBEWithMD5AndTripleDES

input:你要加密的字符串,例如数据库连接字符串、用户名、密码等。

password:用于加密的密钥。

algorithm:加密算法,推荐使用 PBEWITHHMACSHA512ANDAES_256

使用Jasypt API :在你的Java应用程序中,你可以通过注入StringEncryptor接口的实现类来编程方式加密和解密字符串。这通常在你的Spring Boot应用程序中通过自动装配完成。

/**
 * 加密控制器
 *
 * @author 鲁子狄
 **/
@SaIgnore
@RequiredArgsConstructor
@RestController
@RequestMapping("/jasypt")
public class JasyptController {

    private final StringEncryptor stringEncryptor;

China编程    /**
     * 加密
     *
     * @param text 明文
     * @return 密文
     */
    @RequestMapping("/encrypt")
    public String encrypt(String text) {
        return stringEncryptor.encrypt(text);
    }

    /**
     * 解密
     *
     * @param text 密文
     * @return 明文
     */
    @RequestMapping("/decrypt")
    public String decrypt(String text) {
        return stringEncryptor.decrypt(text);
    }
}

4. 将加密信息存储到配置文件中

密钥格式如下:

ENC(your-encrypted-string)

加密敏感信息后,你需要将这些加密后的信息存储到配置文件中。在Jasypt中,加密后的信息通常以ENC(...)的形式出现,括号内是加密后的密文。例如:

username: ENC(aHApYu/25KrMl/q6Mr7X+0jYRC8E52V62ciUqtzDelELeHUwUrgGDl1oQJvueXCt)
password: ENC(A0bDpXcWODFJ7JXiDNVKU5n49RSLM4Q3e5ZtS5T+fTY54S12zazVyxHhbV49OzY7)

5.应用程序启动时自动解密

当你的Spring Boot应用程序启动时,Jasypt会自动检测配置文件中的ENC(...)字符串,并使用你配置的加密密码来解密这些字符串。解密后的明文将用于应用程序的配置中。

注意: 如过用环境变量传参,本地启动时需要传入环境变量,jar包运行也一样

-Djasypt.encryptor.password=your-encryptor-password

本地

SpringBoot3使用Jasypt实现加密配置文件

jar包命令 :

java -Djasypt.encryptor.password=your-encryptor-password -jar your-jar

二. Jasypt配置项

配置参数描述示例
jASPyt.encryptor.password加密器的密码,用于解密属性jaspyt.encryptor.password=mySecretPassword
jaspyt.encryptor.algorithm加密算法的名称jaspyt.encryptor.algorithm=PBEWithMD5AndDES
jaspyt.encryptor.keyObtentionIterations获取密钥时使用的迭代次数jaspyt.encryptor.keyObtentionIterations=1000
jaspyt.encryptor.poolSize加密池的大小(如果使用了池化加密器)jaspyt.encryptor.poolSize=1
jaspyt.encryptor.providerName加密提供者的名称(如JCE提供者)jaspyt.encryptor.providerName=SunJCE
jaspyt.encryptor.saltGeneratorClassName盐生成器的类名jaspyt.encryptor.saltGeneratorClassName=org.jasypt.salt.RandomSaltGenerator
jaspyt.ehttp://www.chinasem.cnncryptor.ivGeneratorClassName初始向量生成器的类名jaspyt.encryptor.ivGenejsratorClassName=org.jasypt.iv.NoIvGenerator
jaspyt.encryptor.stringOutputType加密字符串的输出类型(如base64)jaspyt.encryptor.stringOutputType=base64
jaspyt.encryptor.property.prefix加密属性前缀,用于识别加密属性jaspyt.encryptor.property.prefix=ENC(
jaspyt.encryptor.property.suffix加密属性后缀,用于识别加密属性jaspyt.encryptor.property.suffix=)
jaspyt.encryptor.proxyPropertySources是否通过代理截取属性值以进行解密jaspyt.encryptor.proxyPropertySources=true

三. 支持的加密算法

Jasypt支持多种加密算法以保护敏感数据。以下是Jasypt支持的一些常见加密算法:

加密算法名称描述
PBEWithMD5AndDES基于密码的加密(PBE),使用MD5作为散列函数和DES作为加密算法。这是一种较旧的加密算法,但在某些旧系统中可能仍在使用
PBEWithMD5AndTripleDES与PBEWithMD5AndDES类似,但使用TripleDES作为加密算法,提供了更强的安全性。
PBEWithHMACSHA512ANDAES_256使用HMAC-SHA-512散列函数和AES-256加密算法的组合,提供了非常高的安全性。这是Jasypt较新版本中推荐的加密算法之一(默认值)
AES高级加密标准(AES),是一种广泛使用的对称加密算法。Jasypt支持不同长度的AES密钥,如AES-128、AES-192和AES-256
RSARivest-Shamir-Adleman(RSA)算法,是一种非对称加密算法。它使用一对密钥:公钥用于加密数据,私钥用于解密数据

到此这篇关于SpringBoot3使用Jasypt实现加密配置文件的文章就介绍到这了,更多相关SpringBoot3 Jasypt加密配置文件内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于SpringBoot3使用Jasypt实现加密配置文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1153904

相关文章

Java实现字节字符转bcd编码

《Java实现字节字符转bcd编码》BCD是一种将十进制数字编码为二进制的表示方式,常用于数字显示和存储,本文将介绍如何在Java中实现字节字符转BCD码的过程,需要的小伙伴可以了解下... 目录前言BCD码是什么Java实现字节转bcd编码方法补充总结前言BCD码(Binary-Coded Decima

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Java使用Javassist动态生成HelloWorld类

《Java使用Javassist动态生成HelloWorld类》Javassist是一个非常强大的字节码操作和定义库,它允许开发者在运行时创建新的类或者修改现有的类,本文将简单介绍如何使用Javass... 目录1. Javassist简介2. 环境准备3. 动态生成HelloWorld类3.1 创建CtC

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java使用jar命令配置服务器端口的完整指南

《Java使用jar命令配置服务器端口的完整指南》本文将详细介绍如何使用java-jar命令启动应用,并重点讲解如何配置服务器端口,同时提供一个实用的Web工具来简化这一过程,希望对大家有所帮助... 目录1. Java Jar文件简介1.1 什么是Jar文件1.2 创建可执行Jar文件2. 使用java

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2