java xml文件加密_java实现工程配置文件敏感字段加解密

以下引自他人博客:

1. 需求背景

我们在开发应用时,需要连接数据库,一般把数据库信息放在一个属性配置文件中,比如***.properties,具体的内容

#mysql的配置文件

jdbc.url=jdbc:mysql://127.0.0.1:3306/test

jdbc.username=root

jdbc.password=123456

里面用明文的方式存储着数据库的敏感信息用户名username和密码password,这是不好的行为,容易产生安全问题。那我们如何实现加密存储呢?

2. 实现原理

实现原理其实很简单,配置文件存储加密后的用户名和密码,重写Druid数据源的两个方法setUsername(String username)和setPassword(String password)对信息解密。

3. 实现方式

3.1 写加密工具

首先得有一个加密工具,具有加解密功能,这里为了方便直接使用Druid中的工具类com.alibaba.druid.filter.config.ConfigTools。使用其中的encrypt(String plainText)方法和decrypt(String cipherText)方法采用默认的公私玥加解密。

3.2 加密配置文件

#MySql数据库配置

connection.url=jdbc:mysql://127.0.0.1:3306/test

connection.username=*************加密后的用户名********************

connection.password=*************加密后的密码**********************

3.3 创建自己的数据源

新建类SecurityDateSource继承数据源DruidDataSource并重写其中设置用户名和密码的方法:

import com.alibaba.druid.filter.config.ConfigTools;

import com.alibaba.druid.pool.DruidDataSource;

public class SecurityDateSource extends DruidDataSource{

@Override

public void setUsername(String username) {

try {

username = ConfigTools.decrypt(username);

} catch (Exception e) {

e.printStackTrace();

}

super.setUsername(username);

}

@Override

public void setPassword(String password) {

try {

password = ConfigTools.decrypt(password);

} catch (Exception e) {

e.printStackTrace();

}

super.setPassword(password);

}

public static void main(String[] args) throws Exception{

String password = "123456";

String username = "root";

System.out.println("加密后的password = [" + ConfigTools.encrypt(password) + "]");

System.out.println("加密后的username = [" + ConfigTools.encrypt(username) + "]");

}

}

3.4 Spring文件中配置数据源(spring-context.xml)

注意将class改为自己的新建的数据源

巴啦啦能量~~~~

以下为自己将其做了修改封装的加密工具,因为工程部署到客户现场的时候,数据库的用户名及密码不可能一直不变(即代码里面写死的root和123456),那么需要动态变换,不可能每次都去代码里面去进行加密,然后换配置文件里面对应的参数值

所以写一个工具,然后直接     java -jar ***.jar,  就会将加密后的参数值输出到当前目录的addpasswd.txt文件中,进去查看,可以自己写shell脚本,将其参数化,自动替换到工程配置文件对应参数里面

这个提供工具类jar包,可以下载下来直接执行

de50fe5dde5e32c842da51972cc585eb.png

84f2b895da4165628780d0d21bb8da00.png

下载地址:https://pan.baidu.com/s/1E_OC6VOPaOdpXYL_DB_NZA

提取码:g8z8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值