如何在使用Spring MVC数据源上下文发送到服务器之前加密数据库密码?

时间:2014-08-26 17:54:53

标签: spring sybase sybase-ase spring-jdbc password-encryption

我有一个连接到Sybase 15.5服务器的Spring MVC应用程序。现在,数据库服务器已升级到Sybase 15.7,并且已在服务器中设置“密码加密”。意味着,客户端应该在将数据库密码发送到数据库服务器之前对其进行加密。我的属性文件中有密码。

问题是,如何在发送到数据库服务器之前加密spring上下文文件中的密码?

当前Spring上下文文件:

<!-- ========================== Data Source [Start] ================================================================== -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
    <property name="driverClass" value="${jdbc.driverClassName}" />
    <property name="jdbcUrl" value="${jdbc.url}" />
    <property name="user" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/>
    <property name="minPoolSize" value="${jdbc.minPoolSize}"/>
    <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/>
    <!-- <property name="timeout"><value>0</value></property> -->   <!-- 0 means: no timeout -->
    <property name="idleConnectionTestPeriod"><value>200</value></property>
    <property name="acquireIncrement"><value>1</value></property>
    <property name="maxStatements"><value>0</value></property>  <!-- 0 means: statement caching is turned off.  -->
    <property name="numHelperThreads"><value>3</value></property>  <!-- 3 is default --> 
</bean>
<!-- ========================== Data Source [End] ==================================================================== -->

2 个答案:

答案 0 :(得分:0)

我认为您可以在发送之前使用内部bean加密您的pwd。他们需要某种加密方法吗?

答案 1 :(得分:0)

我最终能够使用url方法实现这一目标。这使用com.certicom.ecc.jcae.Certicom'类进行加密。

步骤:

  1. 在属性文件中编辑jdbc url,如下所示 jdbc.url = JDBC:SYBASE:TDS:主机名:端口/数据库名称ENCRYPT_PASSWORD = TRUE&安培; JCE_PROVIDER_CLASS = com.certicom.ecc.jcae.Certicom

  2. 将以下3个jars文件放在构建路径中。

    EccpressoFIPSJca.jar,EccpressoFIPS.jar,jconn4-7.07.jar

  3. 这将使用这些API加密数据库密码,然后通过网络将其发送到Sybase 15.7服务器。希望这可以帮助。感谢。