c3p0数据源用户名密码加密

一、cn.com.encrypt.java

package cn.com.encrypt;

import java.io.ByteArrayOutputStream;
import java.util.Properties;

import javax.crypto.Cipher;

import org.springframework.beans.factory.FactoryBean;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class DBEncrypt implements FactoryBean {

	private Properties properties;

	public Object getObject() throws Exception {
		return getProperties();
	}

	public Class getObjectType() {
		return java.util.Properties.class;
	}

	public boolean isSingleton() {
		return true;
	}

	public Properties getProperties() {
		return properties;
	}

	public void setProperties(Properties inProperties) {
		this.properties = inProperties;
		String originalUsername = properties.getProperty("user");
		String originalPassword = properties.getProperty("password");
		if (originalUsername != null) {
			String newUsername = deEncryptUsername(originalUsername);
			properties.put("user", newUsername);
		}
		if (originalPassword != null) {
			String newPassword = deEncryptPassword(originalPassword);
			properties.put("password", newPassword);
		}
	}

	private String deEncryptUsername(String originalUsername) {
		return dCode(originalUsername.getBytes());
	}

	private String deEncryptPassword(String originalPassword) {
		return dCode(originalPassword.getBytes());
	}

	public String eCode(String needEncrypt) {
		byte result[] = null;
		try {
			Cipher enCipher = Cipher.getInstance("DES");
			javax.crypto.SecretKey key = Key.loadKey();
			enCipher.init(1, key);
			result = enCipher.doFinal(needEncrypt.getBytes());
			BASE64Encoder b = new BASE64Encoder();
			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			b.encode(result, bos);
			result = bos.toByteArray();
		} catch (Exception e) {
			throw new IllegalStateException(
					"System doesn't support DES algorithm.");
		}
		return new String(result);
	}

	public String dCode(byte result[]) {
		String s = null;
		try {
			Cipher deCipher = Cipher.getInstance("DES");
			deCipher.init(2, Key.loadKey());
			BASE64Decoder d = new BASE64Decoder();
			result = d.decodeBuffer(new String(result));
			byte strByte[] = deCipher.doFinal(result);
			s = new String(strByte);
		} catch (Exception e) {
			throw new IllegalStateException(
					"System doesn't support DES algorithm.");
		}
		return s;
	}

	public static void main(String[] args) {
		String s = "test";
		DBEncrypt p = new DBEncrypt();
		String afterE = p.eCode(s);
		System.out.println("after:"+afterE);//这里是加密后的字符
		System.out.println("before:"+p.dCode(afterE.getBytes()));
	}
}
 

 

二、cn.com.encrypt.Key.java

package cn.com.encrypt;

import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Decoder;

public class Key {
	private static String encryptKey = "7EV/Zzutjzg=";

	public Key() {
	}

	public static SecretKey loadKey() throws Exception {
		BASE64Decoder d = new BASE64Decoder();
		byte b[] = d.decodeBuffer(encryptKey);
		DESKeySpec dks = new DESKeySpec(b);
		SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
		return keyFactory.generateSecret(dks);
	}
}
 

 

三、cn.com.encrypt.PropertiesEncryptFactoryBean.java

package cn.com.encrypt;

import java.util.Properties;

import org.springframework.beans.factory.FactoryBean;

public class PropertiesEncryptFactoryBean implements FactoryBean {

	private Properties properties;

	public Object getObject() throws Exception {
		return getProperties();
	}

	public Class getObjectType() {
		return java.util.Properties.class;
	}

	public boolean isSingleton() {
		return true;
	}

	public Properties getProperties() {
		return properties;
	}

	public void setProperties(Properties inProperties) {
		this.properties = inProperties;
		String originalUsername = properties.getProperty("user");
		String originalPassword = properties.getProperty("password");
		if (originalUsername != null) {
			String newUsername = deEncryptUsername(originalUsername);
			properties.put("user", newUsername);
		}
		if (originalPassword != null) {
			String newPassword = deEncryptPassword(originalPassword);
			properties.put("password", newPassword);
		}
	}

	private String deEncryptUsername(String originalUsername) {
		return deEncryptString(originalUsername);
	}

	private String deEncryptPassword(String originalPassword) {
		return deEncryptString(originalPassword);
	}

	private String deEncryptString(String originalString) {
		return new DBEncrypt().dCode(originalString.getBytes());
	}

}
 

 

 

四、config.properties

CHECK_ST_ORL_URL=jdbc:oracle:thin:@127.0.0.1:1521:rac
CHECK_ST_ORL_USER=qBEWE7vGhBs=
CHECK_ST_ORL_PASSWD=qBEWE7vGhBs=
CHECK_ST_ORL_driverClassName=oracle.jdbc.driver.OracleDriver

 

五、applicationContext.xml


		
			
				/WEB-INF/classes/config.properties
			
		
	

		
		
		
		
			${CHECK_ST_ORL_driverClassName}
		
		
			${CHECK_ST_ORL_URL}
		
		
		
			30
		
		
			100
		
		
			30
		
		
			1800
		
		
			1800
		
		
			300
		
		
			0
		
		
			false
		
		
			900
		
		
			1000
		
	
	  
          
              
                ${CHECK_ST_ORL_USER}  
                ${CHECK_ST_ORL_PASSWD}  
              
          
     
 

你可能感兴趣的:(数据库-oracle)