一种基于Spring的property文件的密码加密方法与流程

文档序号:12068173阅读:697来源:国知局

本发明涉及计算机软件应用技术领域,具体涉及一种基于Spring的property文件的密码加密方法。



背景技术:

Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring的核心是控制反转(IoC)和面向切面(AOP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。

property文件是一个以.properties为后缀的文件,其作用是保存应用运行时的配置变量。对于一些密码类型的配置如果不进行加密,如数据库密码,可能会造成密码泄露等问题。现有技术中通常采用两次base64进行加密。

Spring本身提供PropertyPlaceholderConfigurer类读取property文件,其中该类中的convertProperty方法为将给定的property键转换为相应的值。



技术实现要素:

本发明要解决的技术问题是:本发明针对以上问题,为web项目的property文件加密,防止密码暴露在生产环境,提供一种基于Spring的property文件的密码加密方法,加密方法可自行定义,本发明的重点是提出一种简单有效的可统一密码加密的一个类,而不需其他地方修改。

本发明所采用的技术方案为:

一种基于Spring的property文件的密码加密方法,所述方法通过在Spring中新写一个类,继承spring的PropertyPlaceholderConfigurer类,并覆盖PropertyPlaceholderConfigurer类的convertProperty方法,然后将property文件注入到新写的类中,从而实现密码加密。

将property配置文件注入到新写的类的实现过程如下:在applicationContext.xml文件中,将property配置文件路径写明到新写的类的locations(位置)属性中。

所述applicationContext.xml是进行spring管理配置的xml文件。

所述方法实现流程如下:

1)继承spring原生的PropertyPlaceholderConfigurer类,进行重写;

2)重写convertProperty方法,按照property文件的加密属性名单中propertyName进行区分密码和非密码类型,进而对密码类型进行解密。

所述property文件是保存应用环境配置的内容为键值对的文件。

所述密码和非密码类型判断过程如下:

通过判断propertyName配置是否为password后缀,若是,返回true,若否,返回false。

所述方法通过在property文件中定义受环境影响易变的变量,可以随部署环境变化而进行相应修改。

易受环境影响的变量就是一些应用依赖的外部变量,比如数据库地址,数据库密码等,需要放置在配置文件中,而不能放在代码中,可以随部署环境进行修改。

本发明的有益效果为:

本发明方法适用Spring构建的web项目,避免密码泄露,能够通过简单有效的可统一密码加密的一个类,而不需其他地方修改。

附图说明

图1为本发明密码类型判断流程图。

具体实施方式

根据说明书附图,结合具体实施方式对本发明进一步说明:

实施例1:

一种基于Spring的property文件的密码加密方法,所述方法通过在Spring中新写一个类,继承spring的PropertyPlaceholderConfigurer类,并覆盖PropertyPlaceholderConfigurer类的convertProperty方法,然后将property文件注入到新写的类中,从而实现密码加密。

实施例2

在实施例1的基础,本实施例将property配置文件注入到新写的类的实现过程如下:在applicationContext.xml文件中,将property配置文件路径写明到新写的类的locations(位置)属性中。

实施例3

在实施例2的基础,本实施例所述applicationContext.xml是进行spring管理配置的xml文件。

实施例4

如图1所示,在实施例1、2或3的基础,本实施例所述方法实现流程如下:

1)继承spring原生的PropertyPlaceholderConfigurer类,进行重写;

2)重写convertProperty方法,按照property文件的加密属性名单中propertyName进行区分密码和非密码类型,进而对密码类型进行解密。

相关代码如下:

//继承spring原生的PropertyPlaceholderConfigurer类,进行重写

public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {

@Override

//重写convertProperty方法,按照propertyName进行区分密码和非密码类型,进而对密码类型进行解密

protected String convertProperty(String propertyName, String propertyValue) {

//判断配置是否为密码类型,若是进行解密,若否直接返回

if (isEncryptProp(propertyName)) {

//按照选定的加密方法进行密码解密

String decryptValue = CryptoUtils.getDecryptString(propertyValue);

return decryptValue;

} else {

return propertyValue;

}

}

实施例5

在实施例4的基础,本实施例所述property文件是保存应用环境配置的内容为键值对的文件。

实施例6

在实施例5的基础,本实施例所述密码和非密码类型判断过程如下:

通过判断propertyName配置是否为password后缀,若是,返回true,若否,返回false。

相关代码如下:

//判断配置是否为密码类型

private boolean isEncryptProp(String propertyName) {

//判断配置是否为password后缀,若是返回true,若否返回false

if (propertyName.endsWith("password")) {

return true;

}

return false;

}

}

实施例7

在实施例6的基础,本实施例所述方法通过在property文件中定义受环境影响易变的变量,可以随部署环境变化而进行相应修改。

易受环境影响的变量就是一些应用依赖的外部变量,比如数据库地址,数据库密码等,需要放置在配置文件中,而不能放在代码中,可以随部署环境进行修改。

property配置文件示例配置如下:

实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。

</bean>

</property>

</list>

<value>classpath*:/application.properties</value>

<list>

<property name="locations">

<bean class="com.inspur.cloudframework.spring.beans.factory.config.EncryptPropertyPlaceholderConfigurer">

<-- 定义受环境影响易变的变量 -->

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1