springboot3 使用 jasypt 加密配置文件的使用步骤
目录
- 使用步骤 :
- 1. 添加依赖 :
- 2.配置加密密码
- 3. 加密敏感信息
- 4. 将加密信息存储到配置文件中
- 5.应用程序启动时自动解密
- 支持的加密算法
在线密码生成器 : 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.properties
或application.yml
配置文件中,添加jasypt.encryptor.password
配置项,并设置你的密码。例如:
# applicandroidation.properties jasypt.encryptor.password=your_encryption_password
或者,在appliwww.devze.comcation.yml
中:
jasypt: encryptor: password: your_encryption_password
然而,将密码直接写在配置文件中可能存在安全风险。因此,更推荐的做法是通过启动参数或环境变量来传递这个密码。
- 通过启动参数指定:在启动应用程序时,可以通过
-Djasypt.encryptor.password=your_encryption_password
参数来指定加密密码。
使用环境变量:在某些情况下,使用环境变量来存储敏感信息(如加密密码)可能更为安全。具体方法取决于你的应用程序部署环境。
3. 加密敏感信息
在配置加密密码后,你可以使用Jasypt
提供的工具或API来加密你的敏感信息。加密后的信息将以密文形式存储。
使用Jasypt CLI
工具:Jasypt
提供了一个命令行界面(CLI
)工具,允许你在命令行中加密和解密字符串。你需要下载Jasypt
的jar
包,并在命令行中运行相应的命令。
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
配置参数 | 描述 | 示例 |
---|---|---|
jASPyt.encryptor.password | 加密器的密码,用于解密属性 | jaspyt.encryptor.password=mySecretPassword |
jaspyt.encryptor.algorithm | 加密算法的名称 | jaspyt.encryptor.algorithm=PBEWithMD5AndDES |
jaspyt.encryptor.keyObtentionIterations | 获取密钥时使用的迭代次数 | jaspyt.encryptor.keyObtentionIterations=1000 |
jaspyt.encryptor.poolSijsze | 加密池的大小(如果使用了池化加密器) | 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 |
RSA | Rivest-Shamir-Adleman(RSA)算法,是一种非对称加密算法。它使用一对密钥:公钥用于加密数据,私钥用于解密数据 |
到此这篇关于springboot3 使用 jasypt 加密配置文件的文章就介绍到这了,更多相关springboot3 jasypt 加密配置文件内容请搜索编程客栈(www.cppcns.编程客栈com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论