网站首页 > 博客文章 正文
Jasypt和Spring Boot的兼容性问题有时会引发一些配置问题,特别是在不同版本的Spring Boot和Jasypt之间。如下所示。
Failed to bind properties under 'spring.redis.password' to java.lang.String
下面我们就来看看是如何发生这种问题的?
兼容性问题解决
在使用Jasypt 3.x的时候,通常与Spring Boot 2.x及以上版本兼容。如下所示。
- Spring Boot 2.x 与 Jasypt 3.x的版本兼容性问题,jasypt-spring-boot-starter 版本3.x与Spring Boot 2.x版本兼容良好
- Spring Boot 3.x 与 Jasypt 3.x的版本兼容性问题,最新版本的Jasypt 3.x,最新版本会更好地支持Spring Boot 3.x。
加密算法问题
这里我们以Jasypt3.0.4版本为例进行说明,首先就先来添加相关的依赖。
<dependency>
<groupId>com.github.ulisesbocchio</groupId>
<artifactId>jasypt-spring-boot-starter</artifactId>
<version>3.0.4</version>
</dependency>
接下来就是对SpringBoot的配置文件进行配置,如下所示。这里我们可以通过YML的方式进行配置也可以通过properties的方式进行配置。
jasypt.encryptor.password=mySecretKey
jasypt.encryptor.algorithm=PBEWithMD5AndDES
spring.redis.password=ENC(<yourEncryptedText>)
这里需要注意配置的内容jasypt.encryptor.algorithm=PBEWithMD5AndDES,也就是说这里我们采用了什么方式进行加密,那么在实际加密的时候就要通过什么方式对相关信息进行加密操作,或者是我们可以不指定。如下所示。
import org.jasypt.util.text.AES256TextEncryptor;
public class EncryptUtil {
public static void main(String[] args) {
AES256TextEncryptor textEncryptor = new AES256TextEncryptor();
textEncryptor.setPassword("mySecretKey");
String encryptedText = textEncryptor.encrypt("myRedisPassword");
System.out.println("Encrypted Text: " + encryptedText);
}
}
上面这个例子中我们使用了AES256TextEncryptor进行加密的,然后进入这个类之后会看到,如下的内容
其中我们会发现它的加密的算法是PBEWithHMACSHA512AndAES_256,也就是说在上面我们配置的时候锁配置的的那个项也要是这个,不然就会出现上面的报错。
在Jasypt3.X中提供了很多的加密的算法如下图所示。
当然我们也可以集成TextEncryptor接口来自定实现,这个在后续的分享中我们再来详细的说明。
配置使用
加密操作完成之后,接下来要做的事情就是配置,如下所示。
spring.redis.password=ENC(<encryptedText>)
将加密完成之后的内容通过ENC(<encryptedText>)配置到SpringBoot配置文件中。
测试使用
确认jasypt-spring-boot-starter依赖已经被正确引入并且没有被排除。添加以下代码来检查Jasypt是否在正确运行,如下所示。
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
@Component
public class TestEncryptor implements CommandLineRunner {
@Value("${spring.redis.password}")
private String redisPassword;
@Override
public void run(String... args) throws Exception {
System.out.println("Decrypted spring.redis.password: " + redisPassword);
}
}
如果配置正确并且选择的加密算法解密算法都是一样的,那么我们就会在控制台上看到解密之后的对应的配置文件的明文是什么。
总结
在配置过程中,需要注意的第一就是配置版本的兼容性问题,第二就是算法是否能够正常匹配。二者缺一不可。
猜你喜欢
- 2024-11-13 spring boot配置文件敏感字段加密
- 2024-11-13 Spring Boot数据库密码加密的配置方法
- 2024-11-13 Spring Boot安全之application配置信息加密
- 2024-11-13 如何在SpringBoot项目中实现加密?
- 2024-11-13 SpringBoot进阶-SpringBoot如何实现配置文件脱敏?
- 2024-11-13 加密SpringBoot配置文件技巧(加密pdf文件如何解密编辑)
- 2024-11-13 SpringBoot加密配置属性(springboot配置密码加密)
- 2024-11-13 SpringCloud-OAuth2(二):实战篇(oauth2.0 springcloud)
- 2024-11-13 SpringBoot 配置文件这样加密,才足够安全!
- 2024-11-13 如何保护 SpringBoot 配置文件中的敏感信息
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)