jasypt EncryptablePropertyPlaceholderConfigurer 没有帮助解密密码

问题描述

我开始使用 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 (将#修改为@)