如何在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=value1

property2=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

回到顶部