我正在使用 jasypt 1.9.0 用于数据库密码加密
jdbc.properties
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:XE
jdbc.username=aosmaster
jdbc.password=ENC(aiQkX+5+EicZU3x0/ZWeW9ExV+OW/yc+)
应用程序上下文.xml
<bean class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer">
<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="passwordSysPropertyName" 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>
我添加到 JBOSS run.bat
rem JVM memory allocation pool parameters. Modify as appropriate.
set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -DAPP_ENCRYPTION_PASSWORD=aiQkX+5+EicZU3x0/ZWeW9ExV+OW/yc+
我收到错误。我无法找到过去 3 天的解决方案,请帮助我
org.jasypt.exceptions.EncryptionOperationNotPossibleException
2012-05-19 09:49:01,562 ERROR [STDERR] at org.jasypt.encryption.pbe.StandardPBEByteEncryptor.decrypt(StandardPBEByteEncryptor.java:981)
最后我解决了这个问题:
首先,我们需要决定加密算法和密码。然后我们将使用 Jasypt 附带的命令行工具来加密上面的数据库密码: c:\jasypt 9.0.1\bin input="mypassword" algorithm=PBEWithMD5AndDES password=MY_APPS_PWD
kh1AU2abA4JpwlW1eqixhUzI0PerdI0Z
粘贴到 jdbc 属性 ENC(kh1AU2abA4JpwlW1eqixhUzI0PerdI0Z)
从上面带走的重要一点是配置。属性 passwordSysPropertyName 告诉 Jasypt 它应该从名为 APP_ENCRYPTION_PASSWORD 的系统属性中加载加密密码。现在,如上所述,我将一个运行时属性添加到我的容器中,以便将此密码作为系统属性注入运行时环境:
我将 run.bat 添加到 jboss
设置 JAVA_OPTS=%JAVA_OPTS% -DAPP_ENCRYPTION_PASSWORD=MY_APPS_PWD
run.bat 文件。
干杯!