`
ispring
  • 浏览: 360002 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

扩展Spring——外部属性文件安全(三)

阅读更多
    要完成属性文件的加密工作,首先,必须获取一个密钥文件,然后才能对明文的属性文件进行加密。如果需要调整属性文件的信息,你必须执行相反的过程,即用密钥对加密后的属性文件进行解密,调整属性信息后,再将其加密。
DESEncryptUtil 工具类可以完成以上所提及的三个工作:
 生成一个密钥文件
java com.baobaotao.DESEncryptUtil key D:\key.dat
第一个参数为key,表示创建密钥文件,第二个参数为生成密钥文件的保存地址。
 用密钥文件对属性文件进行加密
java com.baobaotao.DESEncryptUtil encrypt d:\test.properties d:\key.dat
第一个参数为encrypt,表示加密,第二个参数为需要加密的属性文件,第三个参数为密钥文件。如果加密成功,将生成en_test.properties的加密文件。
 用密钥文件对加密后的属性文件进行解密
java com.baobaotao.DESEncryptUtil decrypt d:\test.properties d:\key.dat
第一个参数为decrypt,表示解密,第二个参数为需要解密的属性文件,第三个参数为密钥文件。如果加密成功,将生成rs_test.properties的解密文件。

    在Spring中配置加密属性文件
    假设我们通过DESEncryptUtil 工具类创建了一个key.bat密钥,并对car.properties属性进行加密,生成加密文件en_car.properties。下面,我们通过DecryptPropertyPlaceholderConfigurer增强类进行配置,让Spring容器支持加密的属性文件:
    假设我们通过DESEncryptUtil 工具类创建了一个key.bat密钥,并对car.properties属性进行加密,生成加密文件en_car.properties。下面,我们通过DecryptPropertyPlaceholderConfigurer增强类进行配置,让Spring容器支持加密的属性文件:
<bean class="com.baobaotao.place.DecryptPropertyPlaceholderConfigurer"> ①
    <property name="locations">
        <list>
            <value>classpath:com/baobaotao/en_car.properties</value>
        </list>
    </property>
    <property name="keyLocation" value="classpath:com/baobaotao/key.dat" />
    <property name="fileEncoding" value="utf-8" />
</bean>
<bean id="car" class="com.baobaotao.place.Car"> ②
    <property name="brand" value="${brand}" />
    <property name="maxSpeed" value="${maxSpeed}" />
    <property name="price" value="${price}" />
</bean>

    注意①处的配置,我们使用自己编写的DecryptPropertyPlaceholderConfigurer替代Spring的PropertyPlaceholderConfigurer,由于前者对属性文件进行了特殊的解密处理,因此②处的car Bean也可以引用到加密文件en_car.properties中的属性项。

    小结
    要Spring配置时,将一些重要的信息独立到属性文件中是比较常见的做法,Spring只支持明文存放的属性文件,在某些场合下,我们可以希望对属性文件加密保存,以保证关键信息的安全。通过扩展PropertyPlaceholderConfigurer,在属性文件流加载后应用前进行解密就可以很好地解决这个问题了。
分享到:
评论

相关推荐

    ProSpring——Spring专业开发指南

    《ProSpring——Spring专业开发指南》是一本深入探讨Spring框架的专业书籍,旨在帮助开发者全面理解和掌握Spring的核心概念、功能及最佳实践。通过阅读本书,你可以深入理解Spring如何为Java应用程序提供强大的依赖...

    SSH笔记-通过property-placeholder使用外部属性文件

    本笔记将专注于Spring框架中的一个关键特性——通过`property-placeholder`使用外部属性文件,这在实际项目中非常常见,能够有效地实现配置的解耦和管理。 首先,让我们理解`property-placeholder`的概念。在Spring...

    Spring——IOC(控制反转)与DI(依赖注入).docx

    Spring框架中的IOC(控制反转)和DI(依赖注入)是两种关键的设计模式,它们极大地提升了软件的可维护性和可扩展性。控制反转是一种设计思想,它改变了传统的对象创建方式,将对象的创建和管理权从应用程序自身转移...

    Spring总结——田超凡.docx

    这些应用需要具备高度的安全性、性能以及可扩展性和维护性。Spring 框架针对这些需求提供了相应的解决方案,使开发者能够快速构建可维护、可扩展的系统。 【Spring 框架的核心价值】 1. **控制反转 (IoC/DI)**:...

    JavaEE精讲之Spring框架实战 ——学习笔记.zip

    1. **依赖注入**:Spring的DI允许开发者通过外部配置文件来管理对象之间的依赖关系,而不是在代码中硬编码这些依赖。这种方式使得代码更加灵活,易于测试和维护,因为对象的创建和配置是解耦的。 2. **面向切面编程...

    Spring依赖注入——java项目中使用spring注解方式进行注入.rar

    依赖注入是一种设计模式,其核心思想是将对象之间的依赖关系从代码中分离出来,由外部容器(如Spring框架)负责管理对象的创建和装配,而不是由对象自身负责。这样可以提高代码的可测试性、可维护性和灵活性。 二、...

    幻灯片——Spring.NET介绍(德文版)

    Spring.NET 支持三种依赖注入方式:构造函数注入、属性注入和方法注入。 #### 生命周期管理 Spring.NET 提供了对对象生命周期的管理能力,包括初始化和销毁时的回调方法。这些方法可以在对象创建或销毁时自动调用,...

    JavaEE开发的颠覆者SpringBoot实战[完整版].part3

    涵盖使用Spring Boot 进行Java EE 开发的绝大数应用场景,包含:Web 开发、数据访问、安全控制、批处理、异步消息、系统集成、开发与部署、应用监控、分布式系统开发等。 第一部分 点睛Spring 4.x 第1 章 Spring ...

    关于Spring的69个面试问答——终极列表

    10. **配置文件**:Spring的配置通常以XML文件形式存在,描述了对象的配置和相互关系。此外,Spring 3.0后引入了基于注解的配置,使得配置更加简洁。 11. **Spring IOC容器**:Spring的IOC容器负责实例化、配置和...

    10.客户端——Struts 2+Spring+EJB架构实现

    Struts 2、Spring 和 EJB 是 Java Web 开发中的三个关键框架,它们共同构建了一个强大的客户端应用程序架构。本文将深入探讨这三个框架如何协同工作,以及它们各自在企业级开发中的角色。 首先,Struts 2 是一个...

    达内Spring教程.pdf格式

    在本教程中,我们将深入探讨Spring的核心技术——IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)。 1. **Spring框架概述** Spring框架是一个全面的后端开发解决方案,...

    pro spring 中文版

    在深入探讨Spring框架之前,我们需要理解其核心概念之一——控制反转(Inversion of Control, IoC)。这一概念最初由Martin Fowler提出,并被赋予了一个更为贴切的名字——依赖注入(Dependency Injection, DI)。...

    《Spring+in+action+中文版(第4版)》读书笔记

    Spring支持从外部文件中读取配置信息,这些配置信息可以是属性文件、JSON文件或其他格式。常见的注入方式包括: 1. **Java配置**:使用`@PropertySource`注解和`Environment`接口。 2. **XML配置**:使用`...

    spring-developing-java-applications-enterprise

    而在Spring中,这种依赖关系的管理被转移到了一个外部容器中,即Spring容器。 - **Spring容器**:Spring容器负责实例化、定位和配置对象及其依赖关系。 - **Bean Factory**:是最基本的容器,提供了配置和管理bean的...

    spring boot admin server

    5. 自定义监控:用户可以通过扩展Spring Boot Actuator的端点或者自定义HealthIndicator来添加自己的监控项。 描述中提到的博文链接(由于无法访问,具体内容未知),可能提供了关于如何配置和使用Spring Boot ...

    springioc和spring aop

    Spring框架是Java开发中不可或缺的一部分,它通过提供两种核心特性——控制反转(IoC)和面向切面编程(AOP)来简化应用的构建。理解并掌握这两种技术对于任何Java开发者来说都至关重要。 **控制反转(IoC)**,也...

    Spring的IoC容器初始化源码解析

    - **资源访问**:提供了方便的资源访问机制,比如访问XML文件、属性文件等; - **事件传播**:允许容器内不同组件之间进行事件的传递; - **环境感知**:能够感知容器的运行环境,如部署环境的变化等。 #### 四、...

    Spring学习资料

    这个概念意味着对象的创建和依赖关系的管理不再由对象自身负责,而是由一个外部容器——Spring框架来控制。这样做的好处包括降低代码的耦合度,提高代码的可维护性和减少冗余代码。在Spring中,BeanFactory是实现IOC...

    Spring.3.x企业应用开发实战(完整版).part2

    5.3.1 使用外部属性文件 5.3.2 使用加密的属性文件 5.3.3 属性文件自身的引用 5.4 引用Bean的属性值 5.5 国际化信息 5.5.1 基础知识 5.5.2 MessageSource 5.5.3 容器级的国际化信息资源 5.6 容器事件 5.6.1 Spring...

Global site tag (gtag.js) - Google Analytics