当前位置: 代码网 > it编程>编程语言>Java > SpringBoot3使用Jasypt实现加密配置文件

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

2025年03月23日 Java 我要评论
一. 使用步骤1. 添加依赖<dependency> <groupid>com.github.ulisesbocchio</groupid> <a

一. 使用步骤

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

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

password:用于加密的密钥。

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

使用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

二. 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.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加密配置文件内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com