Spring boot 通过spring自动配置在spring引导应用程序中为数据库连接使用加密密码 正在尝试使用加密的数据库密码通过spring自动配置连接到数据库

Spring boot 通过spring自动配置在spring引导应用程序中为数据库连接使用加密密码 正在尝试使用加密的数据库密码通过spring自动配置连接到数据库,spring-boot,jasypt,Spring Boot,Jasypt,我正在使用Spring自动配置连接到数据库。为此,我在属性文件中添加了以下属性: spring.datasource.url=jdbc:oracle:thin:@ABCDE2D.com:1888:ABCDE2D1 spring.datasource.username=user spring.datasource.password=password spring.datasource.driver-class-oracle.jdbc.driver.OracleDriver 在我的dao类中,我有

我正在使用Spring自动配置连接到数据库。为此,我在属性文件中添加了以下属性:

spring.datasource.url=jdbc:oracle:thin:@ABCDE2D.com:1888:ABCDE2D1
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-oracle.jdbc.driver.OracleDriver
在我的dao类中,我有@autowirednamedParameterJDBCTemplate并直接使用它从数据库中获取数据

在这里,它工作得很好

现在我需要加密属性文件中的密码。 为此,我做了以下工作:

在pom中添加jasypt弹簧靴启动器 在属性文件中添加了spring.datasource.password=ENCNoIv2c+WQYF3LenN0tDYPA== 在属性文件中添加了jasypt.encryptor.password=密钥 现在我得到以下错误:

Failed to bind properties under 'spring.datasource.password' to  
java.lang.String:
Reason: Failed to bind properties under 'spring.datasource.password' to   
java.lang.String

我提供一些基本的指导如下

为了使应用程序正常工作,您需要在属性文件中添加以下两个参数。这是假设您正在使用默认加密算法进行加密。如果您正在使用其他的,那么请确保相应地更改它

jasypt.encryptor.iv生成器classname=org.jasypt.iv.NoIvGenerator jasypt.encryptor.algorithm=pbewithmd5和des

你可以参考更多细节

我将提供以下一些基本指南

为了使应用程序正常工作,您需要在属性文件中添加以下两个参数。这是假设您正在使用默认加密算法进行加密。如果您正在使用其他的,那么请确保相应地更改它

jasypt.encryptor.iv生成器classname=org.jasypt.iv.NoIvGenerator jasypt.encryptor.algorithm=pbewithmd5和des

你可以参考更多细节

就我而言,我给出了错误的jasypt.encryptor.password。 下面给出的示例是我在application.properties中设置的属性:

jasypt.encryptor.password=abc
取而代之的是,我在加密密码时给了jasypt作为我的密钥,所以加密的密码是错误的。然后它抛出了这个错误。 后来我意识到,发现钥匙不正确。 然后给了正确的钥匙,即abc。然后它对我起了作用。
愚蠢的错误,但它花了我4个小时。希望它对其他人有用。

在我的例子中,我给出了错误的jasypt.encryptor.password。 下面给出的示例是我在application.properties中设置的属性:

jasypt.encryptor.password=abc
取而代之的是,我在加密密码时给了jasypt作为我的密钥,所以加密的密码是错误的。然后它抛出了这个错误。 后来我意识到,发现钥匙不正确。 然后给了正确的钥匙,即abc。然后它对我起了作用。 愚蠢的错误,但它花了我4个小时。希望它对其他人有用。

如果您使用的是jasypt dependency,请确保:

spring.datasource.password = Enc

其中Enc是加密密码,key是用于生成加密密码的密钥。

如果您使用的是jasypt dependency,请确保:

spring.datasource.password = Enc


其中Enc是加密密码,key是用于生成加密密码的密钥。

请发布整个StackTrace和另一个问题。为什么要加密密码?如果您将加密机密码添加到属性文件中,那么它就一文不值了。您是否添加了oracle依赖项?请添加您的pom文件。@SimonMartinelli:我现在已经添加了属性文件。一旦它将运行文件,我将把密钥作为环境变量传递。接下来是一个愚蠢的问题:为什么不将数据库密码定义为环境变量呢?所以你可以摆脱jasypt吗?请你把整个StackTrace和另一个问题都贴出来。为什么要加密密码?如果您将加密机密码添加到属性文件中,那么它就一文不值了。您是否添加了oracle依赖项?请添加您的pom文件。@SimonMartinelli:我现在已经添加了属性文件。一旦它将运行文件,我将把密钥作为环境变量传递。接下来是一个愚蠢的问题:为什么不将数据库密码定义为环境变量呢?所以你能彻底摆脱jasypt吗