问题描述
我开始使用 Jasypt 和 Spring 做一些示例,但不幸的是,无法成功测试解密。
我使用的是 Spring 4.3.15 和 Jasypt 1.9.3。我想我仔细地遵循了互联网上给出的示例,但仍然看到密码仅加密发送。
我的弹簧配置如下
<bean id="mydatasource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
<bean id="encryptedPropertyPlaceHolder" class=**"org.jasypt.spring4.properties.EncryptablePropertyPlaceholderConfigurer"**>
<property name="ignoreUnresolvablePlaceholders" value="true"/>
<property name="ignoreResourceNotFound" value="true" />
<constructor-arg>
<bean class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
<property name="config">
<bean class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
<property name="algorithm" value="PBEWithMD5AndDES" />
***<!-- <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" /> -->***
<property name="password" value="jasypt" />
</bean>
</property>
</bean>
</constructor-arg>
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean>
和 jdbc.properties 有值
jdbc.url=<<some url>>
jdbc.username=<<some username>>
jdbc.password=ENC(Y3EEFmt5lEAC96GJlzK9VcETH)
当我运行使用 mydatasource 作为 Autowired 的测试用例时,我看到密码字段设置为 ENC(Y3EEFmt5lEAC96GJlzK9VcETH)。使用 propertyConfigurer 正确分配其他字段。但是加密后的密码在分配给数据源之前没有解密。
我不确定,我在这里遗漏了什么?
此外,正如您所注意到的,我在 encryptedPropertyPlaceHolder 中使用了硬编码密码。我已经阅读了 APP_ENCRYPTION_PASSWORD,但是当尝试在我的 Eclipse 中使用 VM 参数将值设置为 -DAPP_ENCRYPTION_PASSWORD=jasypt 时,它不起作用。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)