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>

  • 相关阅读:
    【PKUWC2018】Minimax
    Codeforces Round #673
    【BZOJ1901】Dynamic Rankings
    【笔记】树状数组
    【CF1420E】Battle Lemmings
    Codeforces Round #672
    Problem A: STL——灵活的线性表
    algorithm
    iterator
    TRY vector
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7048303.html
Copyright © 2011-2022 走看看