package com.jyd.tools.db;
import java.security.Key;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
/**
* AES加密工具
*/
public class SecUtil {
private static byte[] keybytes = {0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x40,0x41,0x42,0x43,0x44,0x45,0x46};
public static void main(String[] args) throws Exception {
String e1 = encrypt("username");
System.out.println(e1);
String e2 = decrypt(e1);
System.out.println(e2);
}
/**
* 加密
* @param value
* @return
*/
public static String encrypt(String value) {
String s=null;
int mode = Cipher.ENCRYPT_MODE;
try {
Cipher cipher = initCipher(mode);
byte[] outBytes = cipher.doFinal(value.getBytes());
s = String.valueOf(Hex.encodeHex(outBytes)); //commons-codec-1.3.jar 需要此jar包
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
/**
* 解密
* @param value
* @return
*/
public static String decrypt(String value) {
String s = null;
int mode = Cipher.DECRYPT_MODE;
try {
Cipher cipher = initCipher(mode);
byte[] outBytes = cipher.doFinal(Hex.decodeHex(value.toCharArray()));
s = new String(outBytes);
} catch (Exception e) {
e.printStackTrace();
}
return s;
}
private static Cipher initCipher(int mode) throws Exception{
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
Key key = new SecretKeySpec(keybytes, "AES");
cipher.init(mode, key);
return cipher;
}
}
//配置加载类
package com.jyd.tools.db;
import java.util.Properties;
import org.hibernate.HibernateException;
import org.hibernate.connection.DriverManagerConnectionProvider;
public class CustomDriverManagerConnectionProvider extends DriverManagerConnectionProvider {
public CustomDriverManagerConnectionProvider() {
super();
}
@Override
public void configure(Properties props) throws HibernateException {
String newUser = SecUtil.decrypt(props.getProperty("hibernate.connection.user"));
String newPwd = SecUtil.decrypt(props.getProperty("hibernate.connection.password"));
props.setProperty("hibernate.connection.user", newUser);
props.setProperty("hibernate.connection.password", newPwd);
super.configure(props);
}
}