原文转自:http://blog.sina.com.cn/s/blog_451f596201014zdh.html
Spring 加载Properties 文件,加密用户名、密码
目标:要加密spring的jdbc配置文件的密码口令。
实现思路:重写加载器的方法,做到偷梁换柱,在真正使用配置之前完成解密。
1、扩展
package com.lavasoft.freamwork.ext.spring;
import com.lavasoft.freamwork.common.ThreeDES;
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{
@Override
protected void processProperties(ConfigurableListableBeanFactory beanFactory, Properties props)
throws BeansException {
String password = props.getProperty("jdbc.password");
if (password != null) {
//解密jdbc.password属性值,并重新设置
props.setProperty("jdbc.password", ThreeDES.getDesString(password));
}
super.processProperties(beanFactory, props);
}
}
2、配置
<!-- 不加密时候使用 -->
<!--<context:property-placeholder location="classpath:jdbc.properties,classpath:tdmc.properties"/>
-->
<!-- 加密时候使用 -->
<bean id="propertyConfig" class="com.lavasoft.freamwork.ext.spring.PropertyPlaceholderConfigurerExt">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
<value>classpath:tdmc.properties</value>
</list>
</property>
</bean>
3、jdbc配置文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mysql
jdbc.user=root
#jdbc.password=123456
jdbc.password=SFFDLKD
相关推荐
在标准配置下,Druid允许开发者通过配置文件(如`druid.properties`或`application.properties`)来设置数据库连接的用户名、密码和其他参数。然而,这些敏感信息在配置文件中明文存储可能会带来安全风险,尤其是在...
然后,我们需要将加密后的密码密文配置到Spring Boot的配置文件中,例如application.properties或application.yml文件中: spring.datasource.password=ENC(2p9NblOkkwNqsYhDruu5TFPR1RgkL9aH) 其中,ENC()函数...
Spring框架作为Java领域最常用的轻量级框架,其配置文件中通常包含了数据库连接信息,如URL、用户名和密码等敏感数据。为了防止这些信息被非法获取,我们需要对它们进行加密处理。本文将详细探讨"Spring数据库连接等...
Spring Boot 的配置文件通常是以 Properties 文件或 YML 文件的形式存在的,而这些文件中可能包含敏感信息,例如数据库连接密码、API 密钥等。如果这些信息被泄露,将会对应用程序的安全性产生严重的影响。因此,...
这是一个简单的案例用来实现Spring中jdbc.properties属性文件进行密文处理,代码中的学生实体自己根据需要在数据库中进行创建
它提供了简单的API,使得开发者可以快速集成到项目中,进行文本、配置文件甚至数据库密码的加密。Jasypt的突出优点在于其可读性,加密后的字符串依然保持可读性,因为它们通常包含可识别的前缀和后缀。 二、Jasypt...
本文将深入探讨如何在Spring项目中实现properties文件的加密。 1. **理解Properties文件** Spring框架广泛使用`properties`文件来存储配置信息。这些文件通常是纯文本格式,容易被读取,从而增加了安全性风险。...
这个子类需要添加解密逻辑,以便在Spring容器初始化时读取加密属性文件,解密后再进行属性替换。 2. 在自定义的`EncryptedPropertyPlaceholderConfigurer`中,你可以添加一个方法来处理加密的属性值。例如,可以...
在Spring框架中,读取和使用Properties文件是一种常见的配置方式,尤其当涉及到数据库连接、环境变量等需要在运行时动态加载或更改的信息时。本文将深入解析如何在Spring环境中读取Properties文件,包括配置步骤、...
接下来,我们需要在`application.properties`文件中配置Druid连接池,并使用加密后的密码和公钥。 ##### 4.1 配置 application.properties 文件 ```properties spring.datasource.druid.username=root # 使用加密...
Spring数据源及配置文件数据加密实现过程详解 Spring Framework是Java企业级应用程序的最流行框架之一,提供了许多强大的功能来简化企业级应用程序的开发。其中,数据源(DataSource)是Spring Framework中最重要...
1. **配置加载顺序**:Spring加载配置文件时有默认的顺序,如果你同时使用了加密的.properties和YAML配置,需要合理安排加载顺序,以保证依赖关系正确。 2. **自定义`ApplicationContextInitializer`**:如果你需要...
现在,当Spring加载`db.properties`时,`EncryptPropertyPlaceholderConfigurer`会自动解密`db.password`,并将其作为安全的密码值传递给应用程序的其他组件。 总之,通过自定义`PropertyPlaceholderConfigurer`...
2. **配置文件加密**:使用加密工具对包含数据库配置的properties或yaml文件进行加密,然后在应用程序启动时解密。例如,可以使用Apache Commons Codec库的Base64算法进行编码解码。 3. **Spring Cloud Config ...
在`jdbc.properties`文件中,我们将用户名和密码存储为加密后的字符串。这些字符串应该使用相同的加密秘钥进行加密,以便在运行时能正确解密。 总结一下,Spring配置文件加密方法的步骤包括: 1. 创建一个自定义...
在Spring框架中,数据源(DataSource)是连接数据库的关键组件,通常包含敏感信息,如数据库URL、用户名和密码。为了确保这些信息的安全,我们需要对它们进行加密。本篇将详细介绍如何在Spring应用中实现数据源配置...
Spring Boot和Spring框架默认使用YAML或Properties文件来配置数据库连接信息,包括用户名和密码。为了保护这些敏感信息,我们可以使用密码加密技术。Spring Boot提供了`jasypt-spring-boot-starter`这个库,它允许...
我们需要在Spring的配置文件(如`applicationContext.xml`)中配置`PropertyPlaceholderConfigurer`,指定属性文件的位置,并提供一个自定义的`PropertiesPersister`,这个`PropertiesPersister`将调用我们的加密...
为了在项目中使用这些自定义注解,我们需要在SpringBoot的配置文件(`application.yml`或`application.properties`)中配置相关的加密密钥和算法。例如: ```yaml encrypt: algorithm: AES # 默认加密算法 key: ...
可以根据需要调用这两个方法来进行密码的加密和解密。 需要注意的是,在使用 Jasypt 进行加密时,需要确保加密算法的正确性,以免导致加密失败。同时,也需要注意 Jasypt 的版本问题,以免遇到版本不兼容的问题。