C3p0数据源的连接密码加密处理

1.首先,假设你已经配置好了spring项目

2.以下的配置添加到spring.xml(加密了userName和password):


		
		
		
        
		 
		
	      
	      
	      
	      
	      
	      
	      
	      
	     
	



	  
          
              
                ${jdbc.username}  
                ${jdbc.password}  
              
          
     

3.以下是自定义的加密解密的类(直接复制就行,不用改,用的是Java自带的Base64算法)

package com.util;

import java.util.Base64;
import java.util.Properties;

import org.springframework.beans.factory.FactoryBean;

public class EncryptedDataSourceFactory 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 = decryptDESUsername(originalUsername);  
            properties.put("user", newUsername);  
        }  
        if (originalPassword != null){  
            String newPassword = decryptDESPassword(originalPassword);  
            properties.put("password", newPassword);  
        }  
	}

	private String decryptDESUsername(String originalUsername) {
		return decryptDES(originalUsername);
	}

	private String decryptDESPassword(String originalPassword) {
		return decryptDES(originalPassword);
	}

	/**
	 * 解密
	 * 
	 * @param data
	 *            原始数据
	 * @return 加密后的数据
	 */
	public String decryptDES(String data) {
		try {
			byte[] key = Base64.getDecoder().decode(data);
			return new String(key, "UTF-8");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 加密
	 * 
	 * @param data
	 *            原始数据
	 * @return 加密后的数据
	 */
	public String encryptDES(String data) {
		try {
			String key = Base64.getEncoder().encodeToString(data.getBytes("UTF-8"));
			return key;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

} 
  

4.假设你密码是123456和用户名abc,先测试获取加密的密码和用户名:

C3p0数据源的连接密码加密处理_第1张图片

然后写到你的配置文件里面就行了,像这样:

5.像这样以后要改连接的密码 可以添加测试类来先加密,再修改配置文件即可。

 

参考:1.c3p0明文密码加密:https://blog.csdn.net/tanglei6636/article/details/70143199

2.Java自带的加密解密算法:https://blog.csdn.net/hqm12345qw/article/details/79804295?utm_source=blogxgwz8

你可能感兴趣的:(Java)