Jasypt не может расшифровать пароль

Я пытаюсь расшифровать пароль с помощью jasypt, где пароль передается в качестве аргумента виртуальной машины. 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 ответ

Как насчет того, чтобы сделать как ниже Я разделил переменные среды config и encryptor и удалил некоторые атрибуты, потому что я не понимаю, для чего они. Обратите внимание, что вам нужно передать "jasypt_encryptor_password" как переменную "Environment", а не аргумент 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>

Надеюсь, это работает для вас.

Другие вопросы по тегам