重写连接池的setPassword()方法.
写密文解析成明文.
public synchronized void setPassword(String password) {
super.setPassword(Crypto.decrypt(password));
}
<bean id="dataSource" class="com.cc.utils.MyDataSource" destroy-method="close">
<property name="driverClassName" value="${oracle.driverClassName}"/>
<property name="url" value="${oracle.url}"/>
<property name="username" value="${oracle.username}"/>
<property name="password" value="${oracle.password}"/>
</bean>
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class Crypto {
private static Key key;
private static final String strKey = "key";
private static void setKey(String strKey) {
try {
KeyGenerator generator = KeyGenerator.getInstance("DES");
generator.init(new SecureRandom(strKey.getBytes()));
key = generator.generateKey();
} catch (Exception e) {
e.printStackTrace();
}
}
private static byte[] getCipherFromClear(byte[] byteClear) {
Cipher cipher = null;
byte[] byteCipher = null;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, key);
byteCipher = cipher.doFinal(byteClear);
} catch (Exception e) {
e.printStackTrace();
} finally {
cipher = null;
}
return byteCipher;
}
/**
* 加密
* @param plainStr
* @return
*/
public static String encrypt(String plainStr) {
BASE64Encoder base64Encode = new BASE64Encoder();
String strCipher = "";
byte[] bClear = null;
byte[] bCipher = null;
setKey(strKey);
try {
bClear = plainStr.getBytes("UTF-8");
bCipher = getCipherFromClear(bClear);
strCipher = base64Encode.encodeBuffer(bCipher);
} catch (Exception e) {
e.printStackTrace();
}
return strCipher;
}
private static byte[] getClearFromCipher(byte[] byteCipher) {
Cipher cipher = null;
byte[] byteClear = null;
try {
cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, key);
byteClear = cipher.doFinal(byteCipher);
} catch (Exception e) {
e.printStackTrace();
}
return byteClear;
}
/**
* 解密
* @param strCipher
* @return
*/
public static String decrypt(String strCipher) {
BASE64Decoder base64Decode = new BASE64Decoder();
String strClear = "";
byte[] byteCipher = null;
byte[] byteClear = null;
setKey(strKey);
try {
byteCipher = base64Decode.decodeBuffer(strCipher);
byteClear = getClearFromCipher(byteCipher);
strClear = new String(byteClear, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return strClear;
}
}
分享到:
相关推荐
Tomcat配置数据库连接加密访问
C#2012编写的 自动配置数据库联接字符串的小工具, 配置文件MD5加密。
数据库连接配置(加密保存INI文件) 1、带简单加密算法。 2、保存成本地INI配置文件。
.net下C#数据库连接字符串在配置文件中的加密解密类
springboot配置数据库敏感信息加密操作
使用AES256加密技术实现tomcat7对连接池数据库密码加密解密,资源中包含加密小程序,小程序实现加密,tomcat中实现解密,方便客户自己修改数据库密码且是密文!支持多操作系统如:linux mac os 文件太多分成两部分请...
Tomcat 配置文件数据库密码加密,增加factory属性和修改context.xml文件中密码为密文,在lib文件中添加自定义的factory类 代码是jdk1.8版本,包含简单的加密类和http请求,如果使用简单的加密,不需要引用额外的lib...
对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案,对数据库配置文件进行加密存储方案
SQL ,本人已测试通过,有人会说直接把连接串写程序里不就行了,可以不用那个连接串的,确实是这样的,不过只要你的项目中DataSet里有TableAdapter,那么App.config中的连接串就是必不可少的,所以就要加密。...
ASP.NET的配置文件里面一般会有数据库连接信息,如果不加密,很危险。
本实例有个错误一直没得到解决,希望有高手帮忙改改,该程序是加密项目.exe.config文件,并在程序中解密连接数据库,但现在取出字符串后报错
druid对配置文件中的数据库密码的加密................................................
proxool 数据库连接池用户名、密码加密处理,文件里面包含可直接使用加密的jar以及相关使用说明。
配置文件加密方式, 文件存入嵌入式Derby数据库,不能被外部看到
Scala版3des加密算法,用来实现对数据库配置文件的用户名密码加密。一个idea项目,包含pom文件
本人亲测试,可以实现加密、解密数据库配置文件后动态连接!
此工具可以直接将C#的配置文件进行加密,并且后台无需解密直接可以读取。此工具用于配置项目文件数据库连接安全性问题。
在工程的配置文件中填写数据库密码的密文,在应用程序使用datasource的时候解密成明文以创建连接。
此Proxool修改包已经加入加密解密功能,直接加入压缩包中的jar再将DecUtil类放于项目,此类中有main方法生成加密和解密文。本人已经自用项目一切OK,希望你也行,因为很费时间费力顾10分对不起了,不会用的可以评论...
jboss下c3p0数据库配置加密,解密,只需引入jar包即可实现配置文件的加密解密。web程序lib目录和jboss下lib目录都要引入封装的jar包,将旧的jar包替换