Java 在Spring配置文件中加密密码

Java 在Spring配置文件中加密密码,java,spring,encryption,jasypt,Java,Spring,Encryption,Jasypt,我有一个Springbean,它使用用户名/密码作为构造函数参数的一部分: <bean id="mysender" class="org.springframework.ws.transport.http.CommonsHttpMessageSender"> <property name="c"> <bean class="org.apache.commons.httpclient.UsernamePasswordCred

我有一个Springbean,它使用用户名/密码作为构造函数参数的一部分:

<bean id="mysender" class="org.springframework.ws.transport.http.CommonsHttpMessageSender">
         <property name="c">
             <bean class="org.apache.commons.httpclient.UsernamePasswordCredentials">
                 <constructor-arg value="plaintext"/>
                 <constructor-arg value="plaintext"/>
             </bean>
         </property>
     </bean>

我是否可以仅使用jasypt对配置文件中的这些参数进行加密?bean“org.apache.commons.httpclient.UsernamePasswordCredentials”将用纯文本值实例化,但对用户来说,它们将显示为加密的

我可以使用以下答案使用核心java库代码:从java中手动创建bean mysender,然后在实例化org.apache.commons.httpclient.UsernamePasswordCredentials之前取消字段的脚本


还是有一种我没有提到的尝试过的方法可以实现这一点?

是的,jasypt可以处理这一点。看


您想这样做的原因是什么?密码是每次安装都会更改的,还是类似于整个应用程序的API密钥?@chrylis要求明文凭据不存储在配置文件中。密码将在每次安装基础上更改,但将其外部化为属性文件或JNDI没有意义?@chrylis我不确定我是否遵循。也许这没有什么意义,但这是实现,也是我必须遵循的实现。你能使用JavaConfig语法吗?编写一个以加密值(可能还有一个密钥)作为输入、解密密码并构造客户端对象的方法非常容易。当我在web上搜索这个确切的问题时,位于的Spring integration的Jasypt文档就是这个SO问题前面的结果。它们非常直接和全面。我自己,我将按照第二部分的指示,走“外部化到属性文件”的路线。除使用环境变量存储加密密码外,其他Jasypt文档还提供了关于不同PBE配置的详细信息。