🍁 作者:知识浅谈,CSDN签约讲师,CSDN博客专家,华为云云享专家,阿里云专家博主
📌 擅长领域:全栈工程师、爬虫、ACM算法
🔥 公众号: 知识浅谈

🤞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>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

🎈加密配置参数

你需要一个加密的值来保护你的敏感信息。可以使用Jasypt提供的命令行工具,或者直接在代码中进行加密。
使用命令行工具

  1. 首先,在你的项目中安装Jasypt。可以通过以下命令下载Jasypt Jar(以最新版本为准):

    wget https://github.com/jasypt/jasypt/archive/refs/tags/1.9.3.zip
    
    • 1.
  2. 解压并进入目录,然后使用以下命令来加密字符串:

    java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your_secret_value" password="your_password"
    
    • 1.

    这将返回一个加密后的值。

示例
假设我们需要加密数据库连接的密码my_db_password,执行命令后会得到类似于以下结果:

encrypted: EncryptedPassword
  • 1.

🎈配置YAML或properties文件

将加密后的值放入配置文件(application.yml或application.properties)中。
application.yml示例

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/your_db
    username: your_username
    password: ENC(EncryptedPassword)  # 使用ENC前缀表示加密字符串
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

🎈配置Jasypt解密密码

你需要设置解密密码以允许Jasypt在运行时解密配置参数。可以通过以下方式之一来设置密码:

  • 在application.yml中设置:

    jasypt:
      encryptor:
        password: your_password
    
    • 1.
    • 2.
    • 3.
  • 或者通过环境变量:

    export JASYPT_ENCRYPTOR_PASSWORD=your_password
    
    • 1.
  • 也可以通过命令行参数传递:

    -Djasypt.encryptor.password=your_password
    
    • 1.

🎈编写代码访问配置

现在,你可以在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);
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 测试
    运行你的Spring Boot应用,检查控制台输出以确认加密信息能够正确解密并使用。

  • 额外注意事项
    密码管理:在实际的生产环境中,尽量避免在源代码中硬编码密码。可以考虑使用环境变量或密钥管理工具(如HashiCorp Vault、AWS Secrets Manager等)。
    配置文件加密:Jasypt支持加密整个配置文件,你可以考虑将配置文件本身进行加密。
    总结

🍚总结

大功告成,撒花致谢🎆🎇🌟,关注我不迷路,带你起飞带你富。
作者:知识浅谈