🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
🔥 微信:zsqtcyw 联系我领取学习资料
🤞Spring Boot 3中使用Jasypt实现配置文件信息加密🤞
🎈前言
Jasypt(Java Simplified Encryption)是一个用于提供简单的Java加密功能的库。在Spring Boot中集成Jasypt,可以安全地存储敏感信息,比如数据库密码和API密钥。
🎈创建新的Spring Boot项目
首先,如果你还没有Spring Boot项目,可以通过Spring Initializr(https://start.spring.io/)快速创建一个新的项目。选择以下依赖:
- Spring Web
- Spring Boot DevTools
- Spring Configuration Processor
生成项目后,下载并解压缩,然后在IDE中打开。
🎈 添加Jasypt依赖
在pom.xml中添加Jasypt的依赖:
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version> <!-- 版本根据需要选择 -->
</dependency>
🎈加密配置参数
你需要一个加密的值来保护你的敏感信息。可以使用Jasypt提供的命令行工具,或者直接在代码中进行加密。
使用命令行工具
-
首先,在你的项目中安装Jasypt。可以通过以下命令下载Jasypt Jar(以最新版本为准):
wget https://github.com/jasypt/jasypt/archive/refs/tags/1.9.3.zip
-
解压并进入目录,然后使用以下命令来加密字符串:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your_secret_value" password="your_password"
这将返回一个加密后的值。
示例
假设我们需要加密数据库连接的密码my_db_password,执行命令后会得到类似于以下结果:
encrypted: EncryptedPassword
🎈配置YAML或properties文件
将加密后的值放入配置文件(application.yml或application.properties)中。
application.yml示例
spring:
datasource:
url: jdbc:mysql://localhost:3306/your_db
username: your_username
password: ENC(EncryptedPassword) # 使用ENC前缀表示加密字符串
🎈配置Jasypt解密密码
你需要设置解密密码以允许Jasypt在运行时解密配置参数。可以通过以下方式之一来设置密码:
-
在application.yml中设置:
jasypt: encryptor: password: your_password
-
或者通过环境变量:
export JASYPT_ENCRYPTOR_PASSWORD=your_password
-
也可以通过命令行参数传递:
-Djasypt.encryptor.password=your_password
🎈编写代码访问配置
现在,你可以在Spring组件中访问这些配置信息。在一个Service或者Controller中,比如:
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class MyService {
@Value("${spring.datasource.url}")
private String datasourceUrl;
@Value("${spring.datasource.username}")
private String username;
@Value("${spring.datasource.password}")
private String password;
public void printDatabaseInfo() {
System.out.println("Database URL: " + datasourceUrl);
System.out.println("Username: " + username);
System.out.println("Password: " + password);
}
}
-
测试
运行你的Spring Boot应用,检查控制台输出以确认加密信息能够正确解密并使用。 -
额外注意事项
密码管理:在实际的生产环境中,尽量避免在源代码中硬编码密码。可以考虑使用环境变量或密钥管理工具(如HashiCorp Vault、AWS Secrets Manager等)。
配置文件加密:Jasypt支持加密整个配置文件,你可以考虑将配置文件本身进行加密。
总结
🍚总结
大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。
作者:码海浮生