前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Druid实现数据库连接用户密码加密

Druid实现数据库连接用户密码加密

作者头像
小柒2012
发布2018-04-13 15:02:22
7.2K0
发布2018-04-13 15:02:22
举报
文章被收录于专栏:IT笔记

一、Druid号称是Java语言中最好的数据库连接池。 1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。

2) 替换DBCP和C3P0。Druid提供了一个高效、功能强大、可扩展性好的数据库连接池。

3) 数据库密码加密。直接把数据库密码写在配置文件中,这是不好的行为,容易导致安全问题。DruidDruiver和DruidDataSource都支持PasswordCallback。

4) SQL执行日志,Druid提供了不同的LogFilter,能够支持Common-Logging、Log4j和JdkLog,你可以按需要选择相应的LogFilter,监控你应用的数据库访问情况。

5) 能够提供基于Filter-Chain模式的插件体系。 二、配置实现 Druid对密码的加密解密是自动实现的。 1)对用户名密码加密 java -cp D:/druid-1.0.27.jar com.alibaba.druid.filter.config.ConfigTools root

java -cp D:/druid-1.0.27.jar com.alibaba.druid.filter.config.ConfigTools 123456

执行完成以后会分别生成加密的用户密码以及对应的公钥和私钥。

123.png
123.png

2)重写DruidDataSource

代码语言:javascript
复制
package com.acts.web.common.persistence;

import com.alibaba.druid.filter.config.ConfigTools;
import com.alibaba.druid.pool.DruidDataSource;
/**
 * 数据库用户名加密
 * 创建者    张志朋
 * 创建时间    2017年1月18日
 *
 */
public class DruidConnectionProvider extends DruidDataSource {
    private static final long serialVersionUID = 1377390212442554779L;
    private static String publicKey = "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKfkK2hgtAKuV3uuU1wjo0kyuCFcf4QXxF4+zFUYWf4a5s6CJneKGzwE+onpUL3tsa3SB1Q1HtIlykXO+g7hlkECAwEAAQ==";
    @Override
    public void setUsername(String username) {
        try {
            username = ConfigTools.decrypt(publicKey,username);
        } catch (Exception e) {
            e.printStackTrace();
        }
        super.setUsername(username);
    }
}

3)配置dataSource

代码语言:javascript
复制
<bean id="dataSource" class="com.acts.web.common.persistence.DruidConnectionProvider">
        <property name="DriverClassName" value="${mysql.driverclass}"/>
        <property name="Url" value="${mysql.jdbcurl}"/>
        <property name="MaxActive" value="${MaxActive}"/>
        <property name="MinIdle" value="${MinIdle}"/>
        <property name="Filters" value="${Filters}"/>
        <property name="TimeBetweenEvictionRunsMillis" value="${TimeBetweenEvictionRunsMillis}"/>
        <property name="Username" value="${mysql.user}"/>
        <property name="Password" value="${mysql.password}"/>
        <property name="filters" value="config" />
        <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${publickey}" />
    </bean>

4)配置persistence-mysql.properties文件

代码语言:javascript
复制
mysql.driverclass=com.mysql.jdbc.Driver
mysql.jdbcurl=jdbc:mysql://192.168.1.191:3306/itstyle?characterEncoding=UTF-8
mysql.user=iMNLTD842UfibiwKGgU4wWo8Gmf0wjb8HFkXmt1+S0XZ/3MdKhZx+TiApcXCCsIJGdrSr1a3vy6ugfLuHISZoQ==
mysql.password=ZuLa1c/7gIzx8ZBzJy9PqfOlXFBdpebcNxMTblktk907JO9HDU/cMxq3tM7kKDsh+UBBYeALM/J+/38kSFU/9w==
MaxActive=30
MinIdle=5
Filters=stat
TimeBetweenEvictionRunsMillis=300
publickey = MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAIOP8F1IDaIAqfzWMEccNxodnSXT0Z0ya3KCXKYxgvLz0WrEq1z7ilTfrOjfC6/HvPUIWjP6RZVIy5G2Rzn9W+cCAwEAAQ==

druid常见问题https://github.com/alibaba/druid/wiki/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档