我正在尝试使用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参数,那么它应该忽略这一点并提供加密值作为字符串而不是解密值。
任何指针都会有所帮助。
提前致谢。
答案 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>
希望它适合你。