三种springMVC项目、springboot项目配置文件加密解密方法

三种springMVC项目、springboot项目配置文件加密解密方法

为了项目的安全,今天项目需要用到配置文件(有XML和Java两种文件的)加解密,由于项目年久失修,项目逐渐分出了多个服务,有springMVC模式的,也有springBoot版本的,今天给大家呈现这两种项目的自定义加密方式。

一、springMVC模式

1.自定义一个类,继承PropertyPlaceholderConfigurer类

import org.apache.log4j.Logger;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;

import java.util.Properties;

public class PropertyPlaceholderConfigurerExt extends PropertyPlaceholderConfigurer {
   
	//自定义解密方式,可以使用解密接口解密(自己写的解密服务),也可以使用常规AES秘钥解密方式等解密
	private String URL_KEY = "service.url";
	Logger log=Logger.getLogger(PropertyPlaceholderConfigurerExt.class);

	@Override
	protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props) throws BeansException {
   
		String url = props.getProperty(URL_KEY);
		//一般的解密接口地址也可以先加密,使用的时候再解密
		String durl = AES.dec(url);//解密接口地址
		log.debug("========load durl:"+durl);
		props.setProperty(URL_KEY, durl);
		
		if(url != null && !url.equals("")){
   
			for(String s:prop){
   
				//自定义的解密方式(这里是调用接口解密的),这里不贴了
				String unwrapData = DataSafeUtil.unwrapData(props.getProperty(s));
				log.debug("========load prop ["+s+"]: " + unwrapData);
				props.setProperty(s,unwrapData);//解密后的数据放回Properties
			}
		}
		super.processProperties(beanFactoryToProcess, props);
	}
	
	/*
	 * 这个数组放properties文件中需要解密的常量key
	 */
	private String[] prop = {
   
			"database.url",
			"database.username",
			"database.password"
	};
}

2.在applicationContext.xml文件注册上面自定义PropertyPlaceholderConfigurerExt类,注意applicationContext.xml文件中只允许注册一次加载配置文件的bean,以前存在的可以替换掉
在这里插入图片描述

代码如下:

<!-- 加载 解密 配置文件 -->
<bean id="placeholderConfig" class="com.**.encryption.PropertyPlaceholderConfigurerExt">
	<property name="locations">
		<list>
			<value>classpath:database.properties</value>
			<value>classpath:memcached.properties</value>
		</list>
	</property>
</bean>

3.配置文件中设置已经使用自己的方式加密好的数据
在这里插入图片描述

**附件:**加密文件

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.Map;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值