java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > springboot3  jasypt 加密配置文件

springboot3 使用 jasypt 加密配置文件的使用步骤

作者:鲁子狄

在SpringBoot项目中,使用Jasypt加密配置文件可以有效保护敏感信息,首先,需添加Jasypt依赖并配置加密密码,可在application.properties或通过启动参数、环境变量设置,本文介绍了Jasypt的配置步骤及使用方法,帮助开发者保护应用配置信息

在线密码生成器 : Most Reliable Online Password Generator | Free and Secure (getmypassword.com)

官网 : jasypt

使用步骤 :

1. 添加依赖 :

<dependency>
    <groupId>com.github.ulisesbocchio</groupId>
    <artifactId>jasypt-spring-boot-starter</artifactId>
    <version>3.0.4</version>
</dependency>

2.配置加密密码

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

在配置文件中指定 :在你的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

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

/**
 * 加密控制器
 *
 * @author 鲁子狄
 **/
@SaIgnore
@RequiredArgsConstructor
@RestController
@RequestMapping("/jasypt")
public class JasyptController {
    private final StringEncryptor stringEncryptor;
    /**
     * 加密
     *
     * @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

本地

jar包命令 :

java -Djasypt.encryptor.password=your-encryptor-password -jar your-jar
配置参数描述示例
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.encryptor.ivGeneratorClassName初始向量生成器的类名jaspyt.encryptor.ivGeneratorClassName=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 加密配置文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文