Jasypt无法解密密码

时间:2018-04-09 15:35:16

标签: spring spring-mvc jasypt

我正在尝试使用jasypt解密密码,其中密码作为VM参数传递。使用它的xml文件看起来像 -

<bean id="strongEncryptor"
          class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
        <property name="config">
            <bean class="org.jasypt.encryption.pbe.config.SimpleStringPBEConfig"
                  p:algorithm="PBEWithMD5AndDES" p:password="#{systemProperties['jasypt.encryptor.password']}"
                  p:providerClassName="org.bouncycastle.jce.provider.BouncyCastleProvider"/>
        </property>
    </bean>

    <bean id="propertyConfigurer" p:ignoreResourceNotFound="true" p:nullValue="{null}"
          class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
        <constructor-arg ref="strongEncryptor" />
        <property name="locations">
            <list>
                <value>file:#{systemProperties['appconfig.dir']}/farms/local-testing/application.properties</value>
            </list>
        </property>
        <property name="ignoreUnresolvablePlaceholders" value="true"></property>
    </bean>

如果我不写<property name="ignoreUnresolvablePlaceholders" value="true">,那么我会收到错误,例如未定义的各种属性,但这些属性在base\application.properties中定义。

VM参数以

的形式提供

-Dspring.config.location=appconfig/base/,appconfig/farms/local-testing/ -Dappconfig.dir=/opt/apps/globalpayments/svx/appconfig -Djasypt.encryptor.password=randompassword

无法理解这里发生的事情。

另外一件重要的事情是,如果我不提供VM参数,那么它应该忽略这一点并提供加密值作为字符串而不是解密值。

任何指针都会有所帮助。

提前致谢。

1 个答案:

答案 0 :(得分:0)

如下所示: 我拆分了环境变量config和encryptor,并删除了一些属性,因为我不明白它们是什么。 请注意,您需要传递&#34; jasypt_encryptor_password&#34; as&#34;环境&#34;变量,而不是VM参数。

<bean id="envVarConfig"
  class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" p:algorithm="PBEWithMD5AndDES" p:password="jasypt_encryptor_password" p:providerClassName="org.bouncycastle.jce.provider.BouncyCastleProvider" />

<bean id="configEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor" p:config-ref="envVarConfig" />

<bean id="propertyConfigurer" class="org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer">
        <constructor-arg ref="configEncryptor" />
        <property name="locations">
            <list>
                <value>file:///${appconfig.dir}/farms/local-testing/application.properties</value>
            </list>
        </property>
</bean>

希望它适合你。