zoukankan      html  css  js  c++  java
  • spring配置文件加密

    原文:http://www.open-open.com/code/view/1453520072183

    spring框架在一些对安全性要求较高的生产环境下,配置文件不允许出现明文用户名密码配置,如数据库配置等。本文主要用于解决明文用户名密码加密。
     

    通过继承spring配置类并重写处理方法实现密文解密    

    public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
    	 private String[] encryptPropNames = {"username", "password"};  
    
    	@Override
    	protected void processProperties(ConfigurableListableBeanFactory beanFactory,
    			Properties props) throws BeansException {
    		try {
    		for (int i = 0;i<encryptPropNames.length;i++){
    			 String value = props.getProperty(encryptPropNames[i]);
                 if (value != null) {
    					props.setProperty(encryptPropNames[i],new String(DES.decrypt(new BASE64Decoder().decodeBuffer(value), "解密秘钥")));
                 }
                
    		}
    		super.processProperties(beanFactory, props);
    		} catch (Exception e) {
    			 e.printStackTrace();
                 throw new BeanInitializationException(e.getMessage());
    		}
    	}  
    }

    配置applicationContext.xml文件,并在jdbc.properties中设置密文(根据解密秘钥生成)    

    <!-- class填写刚才那段代码的类路径-->
    <bean id="propertyConfigurer" class="com.**.EncryptPropertyPlaceholderConfigurer">  
                <property name="locations">
                    <list>
                        <value>classpath:jdbc.properties</value>
                    </list>
                </property>
        </bean>

  • 相关阅读:
    java监控Linux磁盘空间的使用情况
    报道篇
    标签详解
    selectors模块
    [Python 多线程] RLock可重入锁
    Mysql中索引的 创建,查看,删除,修改
    openpyxl模块的使用
    Oracle中row_number()、rank()、dense_rank() 的区别
    python面试题
    sql 用Group by分组后,取每组的前几条记录
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7048303.html
Copyright © 2011-2022 走看看