如何通过DataSourceBuilder将jasypt加密密码传递给数据库

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过DataSourceBuilder将jasypt加密密码传递给数据库相关的知识,希望对你有一定的参考价值。

需要在.properties文件中存储加密密码然后需要在配置类中解密并需要使用jasypt传递到数据库

尝试在spring启动应用程序中使用jasypt加密和解密密码 参考qazxsw poi qazxsw poi

link-1中添加了依赖项

link-2

POM.XML文件中添加了加密密码

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

在Spring Boot Application类中

.properties

在配置类中

mail.encrypted.property=ENC(Fy/hjJHHbIYYwijL5YwXAj8Ho2YTwzhi)

但由于密码错误而导致错误,而无需添加加密代码应用程序正常工作

答案

我设法让它像这样工作:

  1. encryptorBean!加密的部分将通过这个bean解密。它在application.properties文件中与jasypt.encryptor.bean占位符连接,这是您提供解密工作的神奇字(密码)的地方

application.properties

@SpringBootApplication
@EnableEncryptableProperties
@PropertySource(name="EncryptedProperties", value = "classpath:encrypted.properties")
public class MyApplication {
    ...
}

那么,我如何访问加密属性? “魔术”在以下摘录中完成

数据库配置器

@Value("${mail.encrypted.property}")
private String password;

@ConfigurationProperties(prefix = "mail")
public Datasource ConfigProperties {
    return DataSourceBuilder
        .create()
        .password(password)
        .build();
}

在幕后环境已经将classpath.properties注册为加密属性源,因此当你要求一个属性(如果它被ENC()包围时,它会调用jasypt.encryptor.bean来尝试解码该属性。

希望这可以帮助!

干杯

以上是关于如何通过DataSourceBuilder将jasypt加密密码传递给数据库的主要内容,如果未能解决你的问题,请参考以下文章

DataSourceBuilder.create().build()

在 Spring boot 中动态配置 DataSourceBuilder url

Writeup | SCTF2018 |CTF 比赛 |By Jas502n

如何转置数据帧以计算值是不是存在的标志?

如何异步使用 HttpWebRequest (.NET)?

使用 Maven 处理依赖地狱的系统方法