Jasypt 配置文件加密的用法

简介: Jasypt 配置文件加密的用法

Jasypt 是一个用于配置文件加密的 Java 库。它可以用来加密和解密配置文件中的敏感信息,如数据库密码、API 密钥等。

使用 Jasypt 加密配置文件的步骤如下:

  1. 引入 Jasypt 依赖 首先,在你的项目的构建文件中添加 Jasypt 依赖。如果使用 Maven,可以在 pom.xml 文件中添加以下依赖:
<dependency>
    <groupId>org.jasypt</groupId>
    <artifactId>jasypt</artifactId>
    <version>1.9.3</version>
</dependency>
  1. 创建加密密钥 Jasypt 需要一个密钥来对配置文件进行加密和解密。可以使用 Jasypt 提供的工具来生成加密密钥。执行以下命令生成密钥:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your-encryption-key" password=your-password algorithm=PBEWithMD5AndDES

这里,input 参数是你要加密的密钥,password 参数是用于保护密钥的密码,algorithm 参数是加密算法。执行该命令后,会生成一个加密后的密钥。

  1. 配置文件加密 将要加密的敏感信息添加到你的配置文件中,然后使用 Jasypt 进行加密。在配置文件中,将待加密的信息用 ENC(加密后的内容) 包裹起来。例如,如果你要加密数据库密码,在配置文件中的配置项可以这样写:
db.password=ENC(加密后的密码)
  1. 解密配置文件 在你的 Java 代码中,使用 Jasypt 进行解密。以下示例演示了如何解密配置文件并获取数据库密码:
import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;
import org.jasypt.properties.EncryptableProperties;
import java.io.FileInputStream;
import java.util.Properties;
 
public class AppConfig {
 
  public static void main(String[] args) throws Exception {
    // 创建加密解密器
    StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
    encryptor.setPassword("your-password"); // 对应第2步设置的密码
    String encryptedPropertyFile = "path/to/encrypted-file.properties";
    
    // 创建加密文件的输入流
    FileInputStream fis = new FileInputStream(encryptedPropertyFile);
    
    // 加载加密文件
    Properties properties = new EncryptableProperties(encryptor);
    properties.load(fis);
    
    // 获取解密后的数据库密码
    String dbPassword = properties.getProperty("db.password");
    System.out.println(dbPassword);
  }
}
  1. 运行代码 运行以上代码将会输出解密后的数据库密码。

以上就是使用 Jasypt 进行配置文件加密的基本用法。通过加密配置文件中的敏感信息,可以更好地保护应用程序的安全性。

要在 Spring Boot 项目中使用 Jasypt

进行配置文件加密,可以按照以下步骤进行操作:

  1. 引入 Jasypt 依赖 在你的项目的构建文件中添加 Jasypt 依赖。如果使用 Maven,可以在 pom.xml 文件中添加以下依赖:
<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>2.1.2</version>
</dependency>


  1. 创建加密密钥 同样需要创建一个加密密钥,可以使用 Jasypt 提供的工具来生成加密密钥,执行以下命令生成密钥:
java -cp jasypt-1.9.3.jar org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI input="your-encryption-key" password=your-password algorithm=PBEWithMD5AndDES

这里,input 参数是你要加密的密钥,password 参数是用于保护密钥的密码,algorithm 参数是加密算法。执行该命令后,会生成一个加密后的密钥。

  1. 配置加密密钥 在你的 Spring Boot 项目的配置文件(如 application.properties 或 application.yml)中,添加以下属性配置:

application.properties:

jasypt.encryptor.password=your-password // 第2步设置的密码

application.yml:

jasypt:
  encryptor:
    password: your-password # 第2步设置的密码
  1. 配置文件加密 在配置文件中,将待加密的敏感信息用 ENC(加密后的内容) 包裹起来。例如,如果你要加密数据库密码,在配置文件中的配置项可以这样写:
db.password=ENC(加密后的密码)
  1. 解密配置文件 在你的 Spring Boot 项目的代码中,可以直接注入 EncryptableEnvironment 类,并使用它来解密配置文件中的值。以下示例演示了如何获取解密后的数据库密码:
import org.jasypt.encryption.StringEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;
 
@SpringBootApplication
public class AppConfig {
 
  @Autowired
  private StringEncryptor encryptor;
 
  public static void main(String[] args) {
    AppConfig app = new AppConfig();
    app.run();
  }
 
  public void run() {
    String decryptedPassword = encryptor.decrypt("ENC(加密后的密码)");
    System.out.println(decryptedPassword);
  }
}

通过在加密后的密码前加上 ENC 注解,Spring Boot 将自动解密该值并注入到 StringEncryptor 对象中。


以上就是在 Spring Boot 项目中使用 Jasypt 进行配置文件加密的基本用法。通过 Jasypt,可以更好地保护应用程序中敏感的配置信息。

重写 Jasypt 解密方法

要重写 Jasypt 解密方法,你可以自定义一个解密器来实现自定义的解密逻辑。以下是一个示例:

  1. 创建自定义解密器类
import org.jasypt.encryption.StringEncryptor;
import org.springframework.stereotype.Component;
 
@Component("customDecryptor") // 可以根据需要指定其他注解,如 Service
public class CustomDecryptor implements StringEncryptor {
 
    @Override
    public String decrypt(String encryptedMessage) {
        // 在这里实现你的自定义解密逻辑
        
        // 例如,实现一个简单的逆向字符串操作
        StringBuilder decryptedMessage = new StringBuilder(encryptedMessage);
        return decryptedMessage.reverse().toString();
    }
 
    @Override
    public String encrypt(String message) {
        throw new UnsupportedOperationException("Encryption is not supported with this decryptor");
    }
    
    // 可以根据需要实现其他方法
}
  1. 配置使用自定义解密器 在你的 Spring Boot 项目的配置文件中,配置使用自定义的解密器。例如,如果你使用的是 application.properties,可以添加以下配置:
jasypt.encryptor.bean=customDecryptor

这样,Spring Boot 将使用你定义的 CustomDecryptor 类来进行解密操作。

  1. 使用自定义解密器 在你的代码中可以使用 StringEncryptor 对象来解密加密后的内容。例如,以下示例演示了如何在 Spring Boot 项目中使用自定义解密器来解密数据库密码:
import org.jasypt.encryption.StringEncryptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.core.env.Environment;
 
@SpringBootApplication
public class AppConfig {
 
  @Autowired
  private StringEncryptor encryptor;
 
  public static void main(String[] args) {
    AppConfig app = new AppConfig();
    app.run();
  }
 
  public void run() {
    String encryptedPassword = "your-encrypted-password";
    String decryptedPassword = encryptor.decrypt(encryptedPassword);
    System.out.println(decryptedPassword);
  }
}

通过注入自定义的 StringEncryptor 对象,你可以在代码中使用自定义解密器来解密加密后的内容。

通过上述步骤,你可以重写 Jasypt 的解密方法,并根据你的需求自定义解密逻辑。


目录
相关文章
|
1月前
|
安全 API 开发工具
oss加密的配置方法
阿里云OSS提供多种加密选项:SSE-OSS(默认或对象级AES-256加密)、SSE-KMS(使用KMS托管CMK)、临时密钥加密和客户端加密(CSE)。可通过控制台或API设置Bucket策略,使用HTTP头部指定加密方式。KMS和临时密钥可能涉及更复杂的密钥管理和权限配置。
141 5
|
1月前
|
Linux 网络安全 数据安全/隐私保护
Linux vsFTPd服务详解——文件加密传输配置
Linux vsFTPd服务详解——文件加密传输配置
144 2
|
2月前
|
Java API Maven
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
我们经常会在yml配置文件中存放一些敏感数据,比如数据库的用户名、密码,第三方应用的秘钥等等。这些信息直接以明文形式展示在文件中,无疑是存在较大的安全隐患的,所以今天这篇文章,我会借助jasypt实现yml文件中敏感信息的加密处理。
183 1
敏感数据的保护伞——SpringBoot Jasypt加密库的使用
|
3月前
|
移动开发 JavaScript 安全
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
Vue 应用程序性能优化:代码压缩、加密和混淆配置详解
38 0
|
1月前
|
编解码 Java Nacos
nacos常见问题之密码加密配置如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
143 0
|
1月前
|
弹性计算 运维 Nacos
nacos常见问题之配置中心加密
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
199 4
|
2月前
|
DataWorks 关系型数据库 Shell
DataWorks数据源问题之配置ssl加密如何解决
DataWorks数据源是指DataWorks中配置的用于数据集成的外部数据源;本合集将讲解如何在DataWorks中配置和管理数据源,以及处理数据源连接和集成过程中的问题。
50 5
|
2月前
|
存储 安全 Nacos
使用KMS为MSE-Nacos敏感配置加密的最佳实践
本文主要介绍通过KMS密钥管理服务产生的密钥对敏感的AK等数据进行加密之后可以有效解决泄漏带来的安全风险问题,其次通过KMS凭据托管的能力直接将MSE的主AK进行有效管理,保障全链路无AK的业务体验,真正做到安全、可控。
92273 3
|
3月前
|
算法 Java 数据库连接
实现 MyBatis-Plus 中的配置加密功能(使用 AES 算法)
实现 MyBatis-Plus 中的配置加密功能(使用 AES 算法)
162 0
|
Java 数据安全/隐私保护
Java实现最电话号码的简单加密源码
Java实现最电话号码的简单加密源码
18 0