码迷,mamicode.com
首页 > 编程语言 > 详细

spring 加密 Druid 连接池(二)—— 加密 url,driverClassName,用户名,密码

时间:2017-05-16 11:04:37      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:工具   void   ati   generate   password   ace   const   添加   ase   

why?

连接信息暴露在配置文件中有风险 

how?

一、准备加密后连接信息

使用Druid自带工具类ConfigTools加密连接信息

技术分享
import com.alibaba.druid.filter.config.ConfigTools;
public class DecryptDruid {
    
    public DecryptDruid() {
        super();
        // TODO Auto-generated constructor stub
    }
    public static void main(String[] args){
        DecryptDruid dp = new DecryptDruid();
        String[] myUserPass ={url,driverclassname,username,password};
                for(int i = 0;i < myUserPass.length();i++){
        dp.testDecrypt(dp.testEncrypt(myUserPass));
    }
    }
    /**
     * 对文字进行解密
     * @throws Exception
     */
    public String testDecrypt(String encry){
        //解密
        String word=encry;
        String decryptword="";
        try {
            decryptword = ConfigTools.decrypt(word);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        System.out.println(decryptword);
        return decryptword;
    }
    /**
     * 文字进行加密
     * @throws Exception 
     */
    public String testEncrypt(String userpass)
    {
        //加密
        String encryptword = "";
        try {
            encryptword = ConfigTools.encrypt(userpass);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        System.out.println(encryptword);
        return encryptword;
    }
}
    
DecryptDruid

二、准备解密方法类

继承DruidDataSource,覆盖父类连接信息set方法

技术分享
import com.alibaba.druid.filter.config.ConfigTools;
import com.alibaba.druid.pool.DruidDataSource;

@SuppressWarnings("serial")
public class EncryptDruidDataSource extends DruidDataSource{
    
    @Override
    public void setUrl(String url){
        try {
            url = ConfigTools.decrypt(url);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        super.setUrl(url);
    }
    
    @Override
    public void setDriverClassName(String driverClassName){
        try {
            driverClassName = ConfigTools.decrypt(driverClassName);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        super.setDriverClassName(driverClassName);
    }
    
    @Override
    public void setUsername(String username){
        try {
            username = ConfigTools.decrypt(username);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        super.setUsername(username);
    }
    
    @Override
    public void setPassword(String password){
        try {
            password = ConfigTools.decrypt(password);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
        super.setPassword(password);
    }
}
View Code

三、更改配置文件

将加密后连接信息加入配置文件

filters=config

四、更改dataSource配置

<bean id="dataSource" class="com.**.**.EncryptDruidDataSource" destroy-method="close">

添加:

<property name="connectionProperties" value="config.decrypt=true;" />

OK!

不过,配置mybatis会有databaseid not found问题,如有解决者,望赐教!

spring 加密 Druid 连接池(二)—— 加密 url,driverClassName,用户名,密码

标签:工具   void   ati   generate   password   ace   const   添加   ase   

原文地址:http://www.cnblogs.com/codegod/p/6859809.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!