- 浏览: 2265505 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (423)
- FileNet相关 (3)
- 应用服务器相关 (22)
- Java综合 (77)
- 持久层 (24)
- struts (11)
- webservice (8)
- 虚拟机 (2)
- 光盘刻录 (0)
- AD及AD集群 (1)
- JS (33)
- F5 (0)
- loadrunner8.1 (0)
- Java 反编译工具 (2)
- DataBase (62)
- ant (1)
- 操作系统 (29)
- 我的任务 (3)
- 平台架构 (16)
- 业务规则引擎 (2)
- 模板 (1)
- EJB (5)
- spring (24)
- CMMI (1)
- 项目管理 (20)
- LDAP (13)
- JMS (10)
- JSP (19)
- JBPM (2)
- web MVC框架设计思想 (2)
- 第三方支付平台 (2)
- BUG管理工具 (1)
- 垃圾站 (2)
- php (1)
- swing (1)
- 书籍 (1)
- QQ qq (2)
- 移动互联网 (26)
- 爱听的歌曲 (0)
- hadoop (4)
- 数据库 (9)
- 设计模式 (1)
- 面试经验只谈 (1)
- 大数据 (9)
- sp (1)
- 缓存数据库 (8)
- storm (2)
- taobao (2)
- 分布式,高并发,大型互联网,负载均衡 (6)
- Apache Ignite (0)
- Docker & K8S (0)
最新评论
-
wangyudong:
新版本 Wisdom RESTClienthttps://gi ...
spring rest mvc使用RestTemplate调用 -
wangyudong:
很多API doc生成工具生成API文档需要引入第三方依赖,重 ...
spring rest mvc使用RestTemplate调用 -
zhaoshijie:
cfying 写道大侠,还是加载了两次,怎么解决啊?求。QQ: ...
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
xinglianxlxl:
对我有用,非常感谢
spring容器加载完毕做一件事情(利用ContextRefreshedEvent事件) -
k_caesar:
多谢,学习了
利用maven的resources、filter和profile实现不同环境使用不同配置文件
关键字:spring中的数据源配置信息加密方案
附件是完整的实现及说明
在使用spring框架开发一些核心的系统时经常会收到客户提出重要信息加密的要求,在这里我就记录一下我实现Spring数据源配置信息JDBC属性的加密过程。
工具/原料
JAVA开发环境
Spring+mybatis+struts2
方法/步骤
先在项目中新建一个加密算法类,代码如下:
package com.cttsp.frame.util.encrypt;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* DES加密算法工具类
* @author RyanCai
* @date 2014-10-8 下午3:24:14
*/
public class DESUtils {
private static Key key;
private static String KEY_STR = "myKey";// 密钥
private static String CHARSETNAME = "UTF-8";// 编码
private static String ALGORITHM = "DES";// 加密类型
static {
try {
KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);
generator.init(new SecureRandom(KEY_STR.getBytes()));
key = generator.generateKey();
generator = null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 对str进行DES加密
*
* @param str
* @return
*/
public static String getEncryptString(String str) {
BASE64Encoder base64encoder = new BASE64Encoder();
try {
byte[] bytes = str.getBytes(CHARSETNAME);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] doFinal = cipher.doFinal(bytes);
return base64encoder.encode(doFinal);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 对str进行DES解密
*
* @param str
* @return
*/
public static String getDecryptString(String str) {
BASE64Decoder base64decoder = new BASE64Decoder();
try {
byte[] bytes = base64decoder.decodeBuffer(str);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] doFinal = cipher.doFinal(bytes);
return new String(doFinal, CHARSETNAME);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
继承实现一个加密配置属性处理类,代码如下:
package com.cttsp.frame.util.encrypt;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
/**
* 继承PropertyPlaceholderConfigurer支持密文属性的属性配置器
* @author <姓名>
* @date 2014-10-8 下午3:34:14
*/
public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
private String[] encryptPropNames = { "username", "password" };
@Override
protected String convertProperty(String propertyName, String propertyValue) {
if (isEncryptProp(propertyName)) {
String decryptValue = DESUtils.getDecryptString(propertyValue);
return decryptValue;
} else {
return propertyValue;
}
}
/**
* 判断是否是加密的属性
*
* @param propertyName
* @return
*/
private boolean isEncryptProp(String propertyName) {
for (String encryptpropertyName : encryptPropNames) {
if (encryptpropertyName.equals(propertyName))
return true;
}
return false;
}
}
修改自己的jdbc属性文件,将需要加密的信息改成加密后的密文,我的配置文件如下图:
对spring中的数据源配置信息加密
再修改srping的配置文件,主要修改如下截图:
对spring中的数据源配置信息加密
5
到这里所有的修改基本上完成了,启动项目正常连接数据库。
附件是完整的实现及说明
附件是完整的实现及说明
在使用spring框架开发一些核心的系统时经常会收到客户提出重要信息加密的要求,在这里我就记录一下我实现Spring数据源配置信息JDBC属性的加密过程。
工具/原料
JAVA开发环境
Spring+mybatis+struts2
方法/步骤
先在项目中新建一个加密算法类,代码如下:
package com.cttsp.frame.util.encrypt;
import java.security.Key;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* DES加密算法工具类
* @author RyanCai
* @date 2014-10-8 下午3:24:14
*/
public class DESUtils {
private static Key key;
private static String KEY_STR = "myKey";// 密钥
private static String CHARSETNAME = "UTF-8";// 编码
private static String ALGORITHM = "DES";// 加密类型
static {
try {
KeyGenerator generator = KeyGenerator.getInstance(ALGORITHM);
generator.init(new SecureRandom(KEY_STR.getBytes()));
key = generator.generateKey();
generator = null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 对str进行DES加密
*
* @param str
* @return
*/
public static String getEncryptString(String str) {
BASE64Encoder base64encoder = new BASE64Encoder();
try {
byte[] bytes = str.getBytes(CHARSETNAME);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] doFinal = cipher.doFinal(bytes);
return base64encoder.encode(doFinal);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
* 对str进行DES解密
*
* @param str
* @return
*/
public static String getDecryptString(String str) {
BASE64Decoder base64decoder = new BASE64Decoder();
try {
byte[] bytes = base64decoder.decodeBuffer(str);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] doFinal = cipher.doFinal(bytes);
return new String(doFinal, CHARSETNAME);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}
继承实现一个加密配置属性处理类,代码如下:
package com.cttsp.frame.util.encrypt;
import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
/**
* 继承PropertyPlaceholderConfigurer支持密文属性的属性配置器
* @author <姓名>
* @date 2014-10-8 下午3:34:14
*/
public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer {
private String[] encryptPropNames = { "username", "password" };
@Override
protected String convertProperty(String propertyName, String propertyValue) {
if (isEncryptProp(propertyName)) {
String decryptValue = DESUtils.getDecryptString(propertyValue);
return decryptValue;
} else {
return propertyValue;
}
}
/**
* 判断是否是加密的属性
*
* @param propertyName
* @return
*/
private boolean isEncryptProp(String propertyName) {
for (String encryptpropertyName : encryptPropNames) {
if (encryptpropertyName.equals(propertyName))
return true;
}
return false;
}
}
修改自己的jdbc属性文件,将需要加密的信息改成加密后的密文,我的配置文件如下图:
对spring中的数据源配置信息加密
再修改srping的配置文件,主要修改如下截图:
对spring中的数据源配置信息加密
5
到这里所有的修改基本上完成了,启动项目正常连接数据库。
附件是完整的实现及说明
- spring数据源配置信息加密实现.rar (1.5 MB)
- 下载次数: 20
发表评论
-
Dubbo Main启动方式浅析
2015-05-27 13:54 15461关键字:Dubbo Main启动方式浅析 服务容器是一个s ... -
各大巨头电商提供的IP库API接口-新浪、搜狐、阿里...
2015-04-22 13:18 15922关键字:各大巨头电商提供的IP库API接口-新浪、搜狐、阿里. ... -
用Java来获取访问者真实的IP地址-超准确
2015-04-22 12:55 6266关键字:用Java来获取访问者真实的IP地址-超准确 下面分享 ... -
Shiro集成OAuth2
2015-04-21 10:31 12472关键字:Shiro集成OAuth2 参考:http://jin ... -
淘宝网架构分享总结 - 架构,分布式,淘宝,虚拟化,水平伸缩
2015-04-19 00:25 7645推荐综合架构交流群:JAVA开发高级群 点击入群!!! 关键 ... -
Zookeeper 和 SASL
2015-04-16 09:29 13652关键字:Zookeeper 和 SASL 介绍 这是一个描述Z ... -
非对称加密(RSA)加密解密实现通信JAVA端工具类(教程)
2015-04-15 17:27 1191关键字:非对称加密(RSA)加密解密实现通信JAVA端工具类( ... -
对称加密(AES)加密实现工具类(教程)
2015-04-15 17:11 2154关键字:对称加密(AES)加密实现工具类(教程) Java加 ... -
Curator-Framework开源Zookeeper快速开发框架介绍
2015-04-14 18:41 709关键字:Curator-Framework开源Zookeepe ... -
IM消息推送之Openfire
2015-04-13 13:40 2229关键字:IM消息推送之Openfire Openfire 采用 ... -
Nio框架之Mina的demo
2015-04-12 13:38 654关键字:Nio框架之Mina的demo 官网:http://m ... -
AMQP中文版协议规范
2015-01-23 17:12 3013关键字:AMQP中文版协议规范 AMQP中文版协议规范:ht ... -
数据库连接池选型
2014-12-04 18:32 1174关键字:数据库连接池选型 proxool(与spring不太 ... -
OAuth2.0的Java实现 Apache Amber
2014-10-09 23:20 811关键字:OAuth2.0的Java实现 Apache Ambe ... -
基于Spring可扩展Schema提供自定义配置支持
2014-07-21 18:38 1012关键字:基于Spring可扩展Schema提供自定义配置支持 ... -
spring 自定义注解实现(MVC层)
2014-07-21 17:32 870关键字:spring 自定义注解实现(MVC层) 前言 在 ... -
企业信息管理系统基础框架jeesite
2014-05-06 22:21 2612jeesite项目地址(使用说明,):http://jeesi ... -
java中文分词组件-word分词
2014-05-06 21:33 21998关键字:java中文分词组 ... -
java制作可执行文件EXE文件
2014-05-05 18:58 1622关键字:java制作可执行文件EXE文件 参考:http: ... -
Quartz任务调度器详解
2014-04-25 22:46 19024关键字: 参考文章:ht ...
相关推荐
在Spring框架中,配置文件通常包含了应用程序的重要信息,如数据库连接、bean的定义以及服务器的配置等。为了保护这些敏感信息不被非法访问或篡改,我们可以对Spring配置文件进行加密处理。本文将深入探讨如何在Java...
Spring数据源及配置文件数据加密实现过程详解 Spring Framework是Java企业级应用程序的最流行框架之一,提供了许多强大的功能来简化企业级应用程序的开发。其中,数据源(DataSource)是Spring Framework中最重要...
但一般来说,它可以是作者自定义的加密算法实现,或者是第三方库,如Jasypt,用于帮助加密和解密配置信息。 总的来说,Spring框架通过结合配置文件和解密器,可以有效地保护数据库连接等敏感信息,避免了因信息泄露...
在实际应用中,通常需要配置数据源(DataSource)来建立与数据库的连接,这些配置信息包括数据库URL、用户名和密码等敏感信息。 对于这些敏感信息,安全性是不可忽视的。配置加密就是一种确保这些信息不被未授权...
为了保护这些信息不被未授权的用户访问,实施核心配置项的加密解决方案至关重要。本文将深入探讨一种基于Java的加密配置方法,通过分析`CryptPropertiesFactoryBean.java`这个文件来理解如何在源码级别实现这一功能...
"Springboot多数据源配置"是Spring Boot应用中一个重要的实践场景,它允许开发者在同一个项目中管理多个不同的数据库,例如主数据库和从数据库,或者用于不同业务逻辑的数据源。这种配置在大数据、分布式系统和...
在Spring Boot中,我们可以利用jasypt来加密配置文件(如application.properties或application.yml)中的敏感数据,确保即使配置文件被泄露,也无法直接获取到原始的明文信息。 首先,我们需要在项目中引入jasypt的...
本示例项目"spring(tomcat)前后端数据加密传输demo"提供了一个基于Spring Boot和Tomcat环境的解决方案,用于演示如何实现前后端数据的加密传输。以下是这个项目中涉及的关键知识点: 1. **Spring Boot**: Spring ...
Spring Boot 之 YML 配置文件信息加密 知识点 1: Jasypt 算法介绍 Jasypt 是一个 Java 库,提供了一种简单的方式来为项目增加加密功能。Jasypt 使用的加密算法是 PBEWithMD5AndDES(对称加密),中文名“基于口令...
在Spring框架中,为了保护应用程序中的敏感信息,如数据库连接字符串、API密钥或任何其他配置属性,我们经常需要对这些属性进行加密。这确保了即使代码被泄露,这些关键信息也不会轻易落入他人之手。本文将深入探讨...
在提供的压缩包文件"ALLSRC"中,你应该能找到一个完整的Spring Security项目,包括源代码、配置文件和依赖。通过这个项目,你可以深入理解Spring Security的工作原理,并学习如何自定义其核心组件。如果你对码云不...
本文将详细介绍如何在Spring Boot项目中整合Druid连接池,并通过非对称加密技术加密数据库密码,从而提高系统的安全性。 #### 二、项目搭建与环境准备 ##### 2.1 新建 Maven 项目 首先,我们需要使用IDEA...
在这个"jasypt加密_spring整合.zip"压缩包中,我们将会探讨如何将Jasypt与Spring框架整合,以便在Hibernate配置文件中安全地存储敏感信息。 首先,Jasypt提供了两种主要的加密模式:强加密(Strong Encryption)和...
2. **自定义`ApplicationContextInitializer`**:如果你需要在Spring启动时执行自定义逻辑,如初始化加密配置,可以实现`ApplicationContextInitializer`接口并注册到Spring容器中。 3. **测试与调试**:编写单元...
本示例将围绕一个基于Spring框架实现的JSON接口,结合HTTPClient库进行网络通信,并利用DES(Data Encryption Standard)加密解密技术确保数据安全。 首先,我们来看JSON接口的实现。Spring框架提供了丰富的支持来...
3. **用户认证**:配置`UserDetailsService`,这个接口用于从数据源获取用户信息。我们可以实现这个接口,或者使用内存中的用户,JDBC用户详情服务,或者其他认证提供者。 4. **权限控制**:使用`@PreAuthorize`、`...
在Java开发领域,Spring Boot框架的应用日益广泛,它简化了微服务的构建并提供了快速开发的能力。当一个项目被打包成jar文件后,这通常意味着它可以...在实际操作中,应结合项目需求和安全策略,选择最适合的加密方案。
Spring Boot 是一个流行的Java开发框架,它简化了创建独立、生产级别的基于Spring的应用程序。...在实际开发中,应遵循最佳实践,使用`BCryptPasswordEncoder`对用户密码进行加密,以保护用户的个人信息安全。
使用Proxool的加密功能,开发者需要在程序启动时加载加密库,并且确保在应用程序的整个生命周期内,只有拥有正确密钥的组件才能解密这些数据。这需要谨慎处理密钥的存储和分发,以防止密钥泄露。 在实际应用中,...