java 获取错误 org.jasypt.exceptions.EncryptionInitializationException:未为基于密码的加密器设置密码

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/10600297/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 01:47:19  来源:igfitidea点击:

Getting error org.jasypt.exceptions.EncryptionInitializationException: Password not set for Password Based Encryptor

javajasypt

提问by user1387365

I am using jasypt-1.9.0 for encryption.

我使用 jasypt-1.9.0 进行加密。

Jdbc.properties

jdbc.properties

jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:ORCL
jdbc.username=testuser
jdbc.password=ENC(lKmVnTVL3zSJXrZpwFmhd6crSHLzYihH)
hibernate.dialect=org.hibernate.dialect.OracleDialect
jpa.databasePlatform=toplink.hibernate.EssentialsHSQLPlatformWithNative
jpa.database=ORCL
C:\jasypt-1.9.0\bin>encrypt input=testuser password=testuser

----ENVIRONMENT-----------------
Runtime: Sun Microsystems Inc. Java HotSpot(TM) Client VM 1.5.0_17-b04
----ARGUMENTS-------------------
input: testuser
password: testuser
----OUTPUT----------------------

lKmVnTVL3zSJXrZpwFmhd6crSHLzYihH

I got the reference from one of your site. I am using multiple context file. I have configured

我从你的网站之一得到了参考。我正在使用多个上下文文件。我已经配置

<bean
class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfi
gurer">
<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" />
</bean>
</property>
</bean>
</constructor-arg>
<property name="locations">
<list>
<value>classpath:/META-INF/props/db/jdbc.properties</
value>
</list>
</property>
</bean>

<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"
value="${jdbc.driverClassName}" ></property>

<property name="url"
value="${jdbc.url}" ></property>
<property name="username"
value="${jdbc.username}" ></property>
<property name="password"
value="${jdbc.password}"></property>
<property name="initialSize" value="10"> </property>
<property name="maxActive"
value="30"> </property>
<property name="maxIdle"
value="10"> </property>
<property name="maxWait"
value="5000"> </
property>
<property name="removeAbandoned"
value="true"> </
property>
<property name="logAbandoned"
value="true"> </
property>

</bean>

When I login my application I am getting error::

当我登录我的应用程序时出现错误::

org.jasypt.exceptions.EncryptionInitializationException: Password not set for Password Based Encryptor

org.jasypt.exceptions.EncryptionInitializationException:未为基于密码的加密器设置密码

回答by Jeshurun

It appears your "APP_ENCRYPTION_PASSWORD" property is not properly set as an environment variable. See thislink to check if it has been properly set as an environment variable. To check if there is a problem with the rest of your configuration, change <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />to <property name="password" value="YOUR_PLAIN_TEXT_PASSWORD_HERE" />and replace YOUR_PLAIN_TEXT_PASSWORD_HERE with your plain text password to test if the rest of your configuration is working.

看来您的“APP_ENCRYPTION_PASSWORD”属性没有正确设置为环境变量。请参阅链接以检查它是否已正确设置为环境变量。要检查您的其余配置是否有问题,请更改<property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" /><property name="password" value="YOUR_PLAIN_TEXT_PASSWORD_HERE" />并用您的纯文本密码替换 YOUR_PLAIN_TEXT_PASSWORD_HERE 以测试您的其余配置是否正常工作。

To set APP_ENCRYPTION_PASSWORD as an environment variable in Windows XP see this link.

要在 Windows XP 中将 APP_ENCRYPTION_PASSWORD 设置为环境变量,请参阅此链接

Alternatively, you can pass the password in as a vm argument when you run your program. If it is a standalone program, you will pass it like java ClassWithMain -DAPP_ENCRYPTION_PASSWORD=your_password. If it is a web application, you will have to pass the same arguments when starting your server. See thisquestion on SO on how to do that for tomcat. Then in your spring configuration, replace <property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" />with <property name="passwordSysPropertyName" value="APP_ENCRYPTION_PASSWORD" />.

或者,您可以在运行程序时将密码作为 vm 参数传入。如果它是一个独立的程序,你会像java ClassWithMain -DAPP_ENCRYPTION_PASSWORD=your_password. 如果是 Web 应用程序,则在启动服务器时必须传递相同的参数。请参阅有关如何为 tomcat 执行操作的 SO 上的问题。然后在您的弹簧配置中,替换<property name="passwordEnvName" value="APP_ENCRYPTION_PASSWORD" /><property name="passwordSysPropertyName" value="APP_ENCRYPTION_PASSWORD" />.

回答by shashikant maheshwari

Once you set the Environment variable. Please restart your eclipse. You may not face this isssue. If issue still persist than try to find your environment variables by below code..

一旦你设置了环境变量。请重新启动您的日食。您可能不会遇到这个问题。如果问题仍然存在,请尝试通过以下代码找到您的环境变量。

Map<String, String> env = System.getenv();
            for (String envName : env.keySet()) {
                System.out.format("%s=%s%n", envName,
                                  en`enter code here`v.get(envName));
            }