spring +hibernate对数据库配置信息加解密(DBCP)
来源:互联网 发布:mac ruby安装 编辑:程序博客网 时间:2024/06/07 09:39
前一段时间某银行项目银行方面需要对数据库配置信息加密,做了这几年项目第一次碰到这样的客户,没办法客户的需求就是我们的追求。现在网上搜了一些方法不得要领,最后下了一份源码commons-dbcp源码自己研究,发现解决办法相当简单。废话少说入正题
1.创建一个类Test继承org.apache.commons.dbcp.BasicDataSource
public static void main(String[] args) {
/**
* 遍历父类方法
*/
for(Method method:new Test().getClass().getMethods())
{
System.out.println(method);
}
}
}
2.重写父类方法 setPassword() (试用于对数据库密码解密)
package com.fuji.test.junit;
import java.lang.reflect.Method;
import com.fuji.common.encrypt.password.Password;
public class Test extends org.apache.commons.dbcp.BasicDataSource{
public static void main(String[] args) {
/**
* 遍历父类方法
*/
for(Method method:new Test().getClass().getMethods())
{
System.out.println(method);
}
}
/**
* 重写父类 setPassword()
*/
public synchronized void setPassword(String password) {
String dePassword=Password.decrypt(password);//将密文password解密成明文password
super.setPassword(dePassword);//解密之后调用父类的setPassword();因为父类放中调用了一个私有变量,重写的方法不能完全代替父类方法
}
}
3.同理如果要对数据库连接地址和数据库用户名解密重写父类的setUrl()和setUsername()
package com.fuji.test.junit;
import java.lang.reflect.Method;
import com.fuji.common.encrypt.password.Password;
public class Test extends org.apache.commons.dbcp.BasicDataSource{
public static void main(String[] args) {
/**
* 遍历父类方法
*/
for(Method method:new Test().getClass().getMethods())
{
System.out.println(method);
}
}
/**
* 重写父类 setPassword()
*/
public synchronized void setPassword(String password) {
String dePassword=Password.decrypt(password);//将密文password解密成明文password
super.setPassword(dePassword);//解密之后调用父类的setPassword();因为父类放中调用了一个私有变量,重写的方法不能完全代替父类方法
}
/**
* 重写父类 setUrl()
*/
public synchronized void setUrl(String url)
{
String deUrl=Password.decrypt(password);//将密文Url解密成明文Url
super.setUrl(deUrl);
}
/**
* 重写父类 setUsername()
*/
public synchronized void setUsername(String username)
{
String deUsername=Password.decrypt(password);//将密文Username解密成明文Username
super.setUsername(deUsername);
}
}
4.修改spring数据库配置文件
<bean id="dataSource4test" class="com.fuji.test.junit.Test" destroy-method="close"><!-- 将引用 (org.apache.commons.dbcp.BasicDataSource)换成自己写的类(com.fuji.test.junit.Test) -->
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="<7:952;6;5?0>=6;00"/> <!--加密之后的数据库链接地址-->
<property name="username" value="<44=636?867=<0:>00"/> <!--加密之后的数据库用户名-->
<property name="password" value="?;=4<;50??;3??2=00"/> <!--加密之后的数据密码-->
</bean>
OK重启服务器能正常连接数据就大工告成了!别的链接池没有试过,应该也能用同样的方法吧,等有时间了研究一下再和大家分享。另外附一个commons-dbcp-1.2.2源码
- spring +hibernate对数据库配置信息加解密(DBCP)
- spring配置dbcp链接数据库
- Spring+Hibernate 数据库配置信息的加密
- PHP对信息加解密函数
- Spring对JSON请求加解密
- Spring对JSON请求加解密
- Spring 数据库数据源 DBCP配置说明
- Spring 数据库数据源DBCP配置说明
- Spring 数据库数据源DBCP配置说明
- Spring 数据库数据源DBCP配置说明
- spring整合hibernate加sqlite数据库
- 项目加解密模块-获取本机一些配置信息
- Spring配置dbcp
- Spring dbcp配置
- spring-DBCP配置
- 对数据库用户名密码的加解密应用之系列
- [Android初级]使用Sqlcipher对sqlite数据库进行加解密
- Spring全局加解密
- 排序算法稳定性分析
- Android学习系列(13)--App列表之游标ListView(索引ListView)
- AppDomain类理解
- Compress::Zlib, gzopen(), gzreadline(), gzclose()
- ServletConfig对象
- spring +hibernate对数据库配置信息加解密(DBCP)
- 从服务器下载&&OTA升级&&JSON文件解析
- 脚本语言学习
- android design
- jni基本介绍
- Net::POP3, login(), list(), get()
- EntityFramework DB操作帮助类
- Android学习系列(14)--App列表之圆角ListView
- Python创建和连接SqLite数据库