• druid连接数据库加解密


    <bean id="dataSource" class="cn.zsmy.palmdoctor.utils.DecryptDruidSource" init-method="init" destroy-method="close"> <!-- 密文配置 -->
    <!-- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"> --> <!-- 明文配置 -->
    <property name="driverClassName" value="${jdbc.driverClassName}" />
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />

    <property name="maxActive" value="20" />
    <property name="initialSize" value="1" />
    <property name="maxWait" value="60000" />
    <property name="minIdle" value="1" />

    <property name="validationQuery" value="SELECT 1" /> <!-- 验证连接是否成功, SQL SELECT 指令至少要返回一行 (测试/验证连接池连接的SQL语句也因数据库而异)-->
    <property name="testOnBorrow" value="false" /> <!-- 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 -->
    <property name="testOnReturn" value="false" /> <!-- 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能 -->
    <property name="minEvictableIdleTimeMillis" value="300000" /> <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
    <!-- 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 -->
    <property name="testWhileIdle" value="true" />
    <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
    <property name="timeBetweenEvictionRunsMillis" value="30000" />
    <property name="maxOpenPreparedStatements" value="20" /><!-- 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。 -->
    <!-- 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。 -->
    <property name="poolPreparedStatements" value="true" />
    <!-- 指定每个PSCache连接上PSCache的大小 -->
    <property name="maxPoolPreparedStatementPerConnectionSize" value="20" />

    <!-- 配置监控统计拦截的filters 去掉后监控界面sql无法统计
    开启web监控、开启sql防火墙 -->
    <property name="filters" value="config,stat,wall"></property>
    <!-- 解密密码必须要配置的项 且filters也要配置config-->
    <property name="connectionProperties" value="config.decrypt=true" />
    <!-- <property name="connectionProperties" value="config.decrypt=true;config.decrypt.key=${publickey}" /> -->
    </bean>

    import com.alibaba.druid.filter.config.ConfigTools;
    import com.alibaba.druid.pool.DruidDataSource;
    /**
    * 用来解密配置中的密文(重点配置,在这里扩展用户名的解密) setUsername(name)
    * 方法对应xml中的一个property属性,password默认加密不需要重写, 还可以加密url 重写setUrl(url)
    */
    public class DecryptDruidSource extends DruidDataSource {
    private static final long serialVersionUID = 1L;

    @Override
    public void setUsername(String username) {
    try {
    username = ConfigTools.decrypt(username);
    } catch (Exception e) {
    e.printStackTrace();
    }
    super.setUsername(username);
    }

    @Override
    public void setUrl(String jdbcUrl) {
    try {
    jdbcUrl = ConfigTools.decrypt(jdbcUrl);
    } catch (Exception e) {
    e.printStackTrace();
    }
    super.setUrl(jdbcUrl);
    }

    public static void main(String[] args) throws Exception {
    //加密
    String password ="jdbc:mysql://127.0.0.1:3306/palm_2_test";
    String encryptword = ConfigTools.encrypt(password);
    System.out.println("加密后的密码:" + encryptword);

    //解密
    String word="kPwQtmiX9g275GOMxIgeZRK+BBeefLJZB+SCaFiMqRECpaTh+jLozvvK8KUbZq74GNiob7C8T87Y+e7j7Jx6dw==";
    String decryptword = ConfigTools.decrypt(word);
    System.out.println("解密后的明文:" + decryptword);
    }
    }

  • 相关阅读:
    [HAOI2016]食物链
    [TJOI2011]序列
    P2548 [AHOI2004]智能探险车
    [JSOI2008]最大数
    模板之dinic
    Excim的NOIP2017游记
    数列排序
    Car的旅行路线
    [HAOI2006]均分数据
    [luogu2210] Haywire
  • 原文地址:https://www.cnblogs.com/shihaiming/p/5760889.html
走看看 - 开发者的网上家园