加密Spring加载的Properties文件

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:
目标:要加密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; 

/** 
* 重写PropertyPlaceholderConfigurer的processProperties方法实现 

* @author leizhimin 2012-03-14 16:47 
*/
 
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://10.87.30.32:3306/tdmc_leizm 
jdbc.user=root 
#jdbc.password=123456 
jdbc.password=tAeE2ib1ILE=
 
加密算法就不公开了。


本文转自 leizhimin 51CTO博客,原文链接:http://blog.51cto.com/lavasoft/807502,如需转载请自行联系原作者
相关文章
|
2月前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
103 2
|
4月前
|
数据安全/隐私保护 Python
用python对文件内容进行加密的2种方式
这篇文章介绍了使用Python对文件内容进行加密的两种方式:利用`cryptography`库的Fernet对称加密和使用`rsa`库进行RSA非对称加密。
108 6
|
19天前
|
Java Spring
【Spring配置】创建yml文件和properties或yml文件没有绿叶
本文主要针对,一个项目中怎么创建yml和properties两种不同文件,进行配置,和启动类没有绿叶标识进行解决。
|
2月前
|
监控 IDE Java
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
100 8
|
3月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
106 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
3月前
|
数据安全/隐私保护 Python
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
如何使用Python的zipfile模块生成密码表并尝试暴力破解加密的ZIP压缩文件。
63 1
Zipfile学习笔记(二)::通过zipfile模块暴力破解加密的压缩文件
|
3月前
|
存储 安全 Java
|
3月前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
499 11
|
4月前
|
XML 存储 Java
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
spring源码刨析-spring-beans(内部核心组件,beanDefinition加载过程)
|
4月前
|
人工智能 IDE 开发工具
Python实行任意文件的加密—解密
Python实行任意文件的加密—解密
32 2