如何在Apache BasicDataSource中使用加密密码?
目前,我将密码[未加密]保留在属性文件中。使用ant将该密码原样放置在配置xml中。
[配置xml用于数据源,它正在创建dbcp.BasicDataSource的对象]
现在,是否有可能在ant目标之后以加密形式复制密码。听说Jasypt可以做到!直到现在我还没有尝试过。但是,问题不止于此。BasicDataSource不接受加密的密码。是否可以替代BasicDatasource。
仅供参考:如果这很重要,我正在使用Spring。
回答:
通过扩展现有任务Copy
(负责文件复制)来创建新任务。通过扩展创建新类型FilterSet
(负责令牌的过滤)。
<target name="encrypted-copy" > <CopyEncrypted todir="dist/xyz/config" overwrite="true">
<fileset dir="config"/>
<encryptionAwareFilterSet>
<filtersfile file="conf/properties/blah-blah.properties" />
</encryptionAwareFilterSet>
</CopyEncrypted>
</target>
property1=value1property2=value2
PASSWORD=^&YUII%%&*(
USERNAME=rjuyal
CONNECTION_URL=...
someotherproperty=value
<bean id="dataSource" class="com.xyz.datasource.EncryptionAwareDataSource"
destroy-method="close" autowire="byName">
<property name="driverClassName">
<value>com.ibm.db2.jcc.DB2Driver</value>
</property>
<property name="url">
<value>@CONNECTION_URL@</value>
</property>
<property name="username">
<value>@USERNAME@</value>
</property>
<property name="password">
<value>@PASSWORD@</value>
</property>
<property name="poolPreparedStatements">
<value>true</value>
</property>
<property name="maxActive">
<value>10</value>
</property>
<property name="maxIdle">
<value>10</value>
</property>
</bean>
...
...
...
执行目标后,将使用属性文件中的值复制xml。密码将被加密。
这将处理加密的密码。
public class EncryptionAwareDataSource extends BasicDataSource{ @Override
public synchronized void setPassword(String password) {
super.setPassword(Encryptor.getDecryptedValue( password ));
}
}
就这些;)
以上是 如何在Apache BasicDataSource中使用加密密码? 的全部内容, 来源链接: utcz.com/qa/415361.html