Java 通用DB链接字符串解密方法

  这种方式是主要是利用了spring加载顺序,因为在加载c3p0加载之前先对配置文件中的密码进行相应的解密,并且注入到属性password中,这样在创建c3p0连接的时候,用的密码就是明文密码了

/*注意,这里有个先后顺序的问题, 必须要在前面 ${env}是环境变量 开发,测试,生产,灰度*/
  
  
      
        ${${env}.boms.jdbc.username}  
        ${${env}.boms.jdbc.password}
        ${${env}.boms.jdbc.url}    
      
  
  





 












下面是读取属性然后解密再把属性传给链接池  DBCP PROXOLL DURID C3P0等等

package com.zns.tool;
//import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.util.Properties;  
import org.springframework.beans.factory.FactoryBean; 

import com.zns.tool.SecUtil;



public final class C3p0DataSource implements FactoryBean
{
	private Properties properties;    /*SPRING的属性对象*/
	private SecUtil    SecEncryptObj; /*安全对象里面有加密解密算法*/
    /*对虚类方法的继承实现,照抄*/
    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) 
    {  
    	SecEncryptObj = new SecUtil();
        this.properties = inProperties;  
        String EncryUsername = properties.getProperty("user");  
        String EncryPassword = properties.getProperty("password");
        String EncryJdbcUrl = properties.getProperty("JdbcUrl");
        if (EncryUsername != null)
        {  
        	try {
        	String DecryUsername = SecEncryptObj.decrypt(EncryUsername);  
            properties.put("user", DecryUsername);
        	} catch (Exception e) {	e.printStackTrace(); } 
        }
        
        if (EncryPassword != null)
        {              
			try {
				String DecryPassword  = SecEncryptObj.decrypt(EncryPassword);
				properties.put("password", DecryPassword);  
			} catch (Exception e) {	e.printStackTrace(); }   
        }
        
        if (EncryJdbcUrl != null)
        {  
        	try {
        	String DecryJdbcUrl = SecEncryptObj.decrypt(EncryJdbcUrl);  
            properties.put("JdbcUrl", DecryJdbcUrl);
        	} catch (Exception e) {	e.printStackTrace(); } 
        }
                
    }  
        
}

关于加密和解密算法 就好多实现的方法了,自然那种单向加密就算了,毕竟解密需要好长时间.

这里给出前同事 康师傅写的加密和解密方法

这个不好,想看去我公众号查看

你可能感兴趣的:(java,WEB,开发)