Jdbc配置文件密码密文传输
来源:互联网 发布:联通云数据公司 编辑:程序博客网 时间:2024/05/18 02:17
#jdbc.properties
master.db.user=FmtMf6LBoaQ=
master.db.password=FmtMf6LBoaQ=
#applicationContext.xml
<bean id="propertyConfigurer" class="com.neusoft.tsdcms.core.web.EncryptablePropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<!-- other resource -->
<value>classpath:fileInterface.properties</value>
<value>classpath:fileResources.properties</value>
</list>
</property>
</bean>
#解密properties文件类EncryptablePropertyPlaceholderConfigurer.java
public class EncryptablePropertyPlaceholderConfigurer extends
PropertyPlaceholderConfigurer {
private static final String KEY = "NEUSOFTTSD";
private static final String MASTER_DB_USER = "master.db.user";
private static final String MASTER_DB_PASSWORD = "master.db.password";
private static final String SLAVE_DB_USER = "slave.db.user";
private static final String SLAVE_DB_PASSWORD = "slave.db.password";
protected void processProperties(
ConfigurableListableBeanFactory beanFactory, Properties props)
throws BeansException {
try {
String m_user = props.getProperty(MASTER_DB_USER);
String m_pwd = props.getProperty(MASTER_DB_PASSWORD);
String s_user = props.getProperty(SLAVE_DB_USER);
String s_pwd = props.getProperty(SLAVE_DB_PASSWORD);
if (m_user != null) {
props.setProperty(MASTER_DB_USER, DESUtil.decrypt(m_user, KEY));
}
if (m_pwd != null) {
props.setProperty(MASTER_DB_PASSWORD, DESUtil.decrypt(m_pwd, KEY));
}
if(s_user != null){
props.setProperty(SLAVE_DB_USER, DESUtil.decrypt(s_user, KEY));
}
if(s_pwd != null){
props.setProperty(SLAVE_DB_PASSWORD, DESUtil.decrypt(s_pwd, KEY));
}
super.processProperties(beanFactory, props);
} catch (Exception e) {
e.printStackTrace();
}
}
}
#加密类DESUtil.java
public class DESUtil {
private final static String DES = "DES";
public final static String DES_KEY = "NEUSOFTTSD";
public static void main(String[] args) throws Exception {
String data = "root";
System.err.println(encrypt(data, DES_KEY));
System.err.println(decrypt(encrypt(data, DES_KEY), DES_KEY));
}
/**
* Description 根据键值进行加密
* @param data
* @param key 加密键byte数组
* @return
* @throws Exception
*/
public static String encrypt(String data, String key) throws Exception {
byte[] bt = encrypt(data.getBytes(), key.getBytes());
String strs = new BASE64Encoder().encode(bt);
return strs;
}
/**
* Description 根据键值进行解密
* @param data
* @param key 加密键byte数组
* @return
* @throws IOException
* @throws Exception
*/
public static String decrypt(String data, String key) throws IOException,
Exception {
if (data == null)
return null;
BASE64Decoder decoder = new BASE64Decoder();
byte[] buf = decoder.decodeBuffer(data);
byte[] bt = decrypt(buf,key.getBytes());
return new String(bt);
}
/**
* Description 根据键值进行加密
* @param data
* @param key 加密键byte数组
* @return
* @throws Exception
*/
private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
// 生成一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance(DES);
// 用密钥初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
return cipher.doFinal(data);
}
/**
* Description 根据键值进行解密
* @param data
* @param key 加密键byte数组
* @return
* @throws Exception
*/
private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
// 生成一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
SecretKey securekey = keyFactory.generateSecret(dks);
// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance(DES);
// 用密钥初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
return cipher.doFinal(data);
}
}
- Jdbc配置文件密码密文传输
- 登录注册密文传输密码
- Ajax密文传输数据
- 加密jdbc配置文件中的用户名密码
- Java和C/C++进行DES/AES密文传输
- Java和C/C++进行DES/AES密文传输
- Java、IOS、C之间进行RSA密文传输
- Java和C/C++进行DES/AES密文传输
- IOS和Java进行AES密文传输(ECB&nb…
- Secret-Garden 一个基于RSA、MD5、SHA的密文传输系统
- JDBC配置文件的读取
- jdbc 配置文件链接数据库
- spring整合jdbc配置文件
- JDBC配置文件的读取
- spring3.0.5jdbc配置文件
- JDBC数据库连接之配置文件
- JDBC配置文件properties
- JDBC:找回密码
- GDI+ 画笔
- DOCKER windows 7 详细安装教程
- CentOS5.5下安装jdk1.7.0_71
- android--解决方案--用BroadcastReceiver监听手机网络状态变化
- android控件学习之十六 ProgressBar实例
- Jdbc配置文件密码密文传输
- Android Binder机制----实现自定义的系统服务
- Spark使用体会
- Hadoop学习总结之三:Map-Reduce入门
- Linux系统下的多线程编程-条件变量&信号量
- jsp分页打印
- Android Application-Telephony-RIL 4 TelephonyManager to GSMServiceStateTracker
- ajax05 jackson一般运用
- ofbiz service 每隔5秒执行一次,执行三次