- 浏览: 223748 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (244)
- java (23)
- java多线程 (7)
- 综合 (1)
- oracle10g (24)
- div+css (1)
- Flex (27)
- java Nio (1)
- java设计模式 (8)
- struts2 (10)
- spring3.0 (5)
- SSH (9)
- dwr (5)
- hibernate3.6 (17)
- dom4j (1)
- sql优化 (5)
- Quartz任务调度框架 (1)
- AOP (3)
- JavaScript (18)
- jquery (3)
- JSF (9)
- ruby (1)
- 正则表达式 (1)
- 明日准备 (2)
- eclipse (3)
- gvim (1)
- CMS (1)
- linux (6)
- 杂 (4)
- java 设计模式 (1)
- MySql (10)
- JBPM (4)
- JSP技术 (1)
- Mybatis And Ibatis (2)
- 经验之谈 (10)
- WebService (1)
- java分布式(高性能,高可用,可伸缩) (0)
- springMvc (2)
- redis (0)
- ant (1)
- Nutz (6)
- 配置管理 (0)
- css+div (1)
- eChars (1)
- angularJs (1)
- D3 (3)
- Scala (1)
最新评论
-
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
Cobain_LI 写道学习了,之前一直都没注意到有这样的问题 ...
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
Cobain_LI:
有个小失误,144和147行多了两个花括号
js面向对象2--js中工厂模式的演化(重要,详细) -
Cobain_LI:
学习了,之前一直都没注意到有这样的问题
js面向对象3--更简单的原型模式已经带来的问题以及解决办法 -
YTT1121:
有网络拓扑发现的源代码么,或者您会编写么?可以有偿求购,搞科研 ...
flex 之twaver1--简单网络拓扑实现
注:原创作品,转载请注明出处。
在项目中,为了项目的配置灵活,长把一些常量写在配置文件中,这时涉及一个问题,就是如果配置字段是密码,就不够安全。这个时候需要在配置文件中把密码加密处理。下面是处理方案:
实际遇到的有两种情况,一种是自己写程序来都去配置文件,这个时候处理比较简单,把自己的加密工具,把密码加个密放进配置文件中,读取的时候再解密即可。 第二种情况是遇到框架东西,例如spring这种框架,密码加密之后卸载配置文件中,我们该怎么处理:下面是处理方法:
1,用自己的加密工具把密码加密之后的密文卸载spring配置文件中。
2,自己写一个读取配置文件的类,这个类必须实现spring的一个接口,并实现当中的相关方法,把这个类配置到spring的配置文件中,并且配置的时候这个类的id必须是固定的,这样spring才能用你写的集成类读取配置文件。
下面是实例:
1,手写新建一个properties的配置文件,放在src的根目录下,内容如下:
2,自己写一个读取配置文件的类,该类必须继承spring的接口。内容如下:
3,把自己写的读取配置文件的java类配置到配置文件中。注意配置读取bean的id一定要是propertyConfigurer
4,userDao实现类
5,测试类
6,创建数据库表,并插入一条数据
-- Create table
create table TBL_USER
(
ID NUMBER(10) not null,
NAME VARCHAR2(20 CHAR),
INFO VARCHAR2(30 CHAR),
REMARK VARCHAR2(30 CHAR),
AGE VARCHAR2(3 CHAR)
);
insert into tbl_user values(hibernate_sequence.nextval,'chenchaoyang','is a good man','hahha','26');
7,存储过程
8,输出结果:
chenchaoyang
is a good man
在项目中,为了项目的配置灵活,长把一些常量写在配置文件中,这时涉及一个问题,就是如果配置字段是密码,就不够安全。这个时候需要在配置文件中把密码加密处理。下面是处理方案:
实际遇到的有两种情况,一种是自己写程序来都去配置文件,这个时候处理比较简单,把自己的加密工具,把密码加个密放进配置文件中,读取的时候再解密即可。 第二种情况是遇到框架东西,例如spring这种框架,密码加密之后卸载配置文件中,我们该怎么处理:下面是处理方法:
1,用自己的加密工具把密码加密之后的密文卸载spring配置文件中。
2,自己写一个读取配置文件的类,这个类必须实现spring的一个接口,并实现当中的相关方法,把这个类配置到spring的配置文件中,并且配置的时候这个类的id必须是固定的,这样spring才能用你写的集成类读取配置文件。
下面是实例:
1,手写新建一个properties的配置文件,放在src的根目录下,内容如下:
driverClass=oracle.jdbc.driver.OracleDriver jdbcUrl=jdbc:oracle:thin:@127.0.0.1:1521:ORCL user=supan password=root maxPoolSize=100 maxIdleTime=100 maxStatementsPerConnection=100 numHelperThreads=1000 idleConnectionTestPeriod=30
2,自己写一个读取配置文件的类,该类必须继承spring的接口。内容如下:
package com.supan.frame; import java.util.Enumeration; import java.util.Properties; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; import org.springframework.util.ObjectUtils; public class MyPropertyPlaceConfigurer extends PropertyPlaceholderConfigurer { @Override protected void convertProperties(Properties props) { super.convertProperties(props); //读取properties文件中键的名字 Enumeration<?> propertyNames = props.propertyNames(); //遍历键名字 while(propertyNames.hasMoreElements()) { String propertyName = (String)propertyNames.nextElement(); //配置的值 String propertyValue = props.getProperty(propertyName); //转换后的值 String convertedValue = convertPropertyValue(propertyValue); //对名为password的值进行解密 if("password".equals(propertyName)) { //在这里可以用自己的加密工具对配置的密文进行解密 //因为此时没有加密工具只是演示一下。 // convertedValue = EmfCipher.decrpypt(convertedValue); convertedValue = "root"; } if(ObjectUtils.nullSafeEquals(propertyValue, convertedValue)) { //注意:这里并不是去修改配置文件,而是改变读取到配置文件中的键值对 props.setProperty(propertyName, convertedValue); } } } }
3,把自己写的读取配置文件的java类配置到配置文件中。注意配置读取bean的id一定要是propertyConfigurer
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!--注入配置文件读取bean --> <bean id="propertyConfigurer" class="com.supan.frame.MyPropertyPlaceConfigurer"> <property name="locations"> <list> <value>jdbc.properties</value> </list> </property> </bean> <!-- 定义数据源Bean,使用C3P0数据源实现 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass"> <value>${driverClass}</value> </property> <property name="jdbcUrl"> <value>${jdbcUrl}</value> </property> <property name="user"> <value>${user}</value> </property> <property name="password"> <value>${password}</value> </property> <property name="maxPoolSize"> <value>${maxPoolSize}</value> </property> <property name="maxIdleTime"> <value>${maxIdleTime}</value> </property> <property name="maxStatementsPerConnection"> <value>${maxStatementsPerConnection}</value> </property> <property name="numHelperThreads"> <value>${numHelperThreads}</value> </property> <property name="idleConnectionTestPeriod"> <value>${idleConnectionTestPeriod}</value> </property> </bean> <!-- 定义HIbernate的SessionFactory,让Spring管理HIbernate,实现Spring和hibernate的整合 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.format_sql">true</prop> </props> </property> <property name="mappingResources"> <list> <value>com/supan/bean/User.hbm.xml</value> </list> </property> </bean> <bean id="userDao" class="com.supan.dao.imp.UserDaoImp"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> </beans>
4,userDao实现类
public void getUserNameAndInfo() { //定义存放结果的结果map final Map<String,String> result = new HashMap<String, String>(); getHibernateTemplate().execute(new HibernateCallback<Object>() { @Override public Object doInHibernate(Session session) throws HibernateException, SQLException { session.doWork(new Work() { @Override public void execute(Connection conn) throws SQLException { CallableStatement proc = null; try { proc = conn.prepareCall("{call PROC_GETUSER_NAME_AGE(?,?,?)}"); //注意:这里是注册输出参数 proc.registerOutParameter(1, java.sql.Types.VARCHAR); proc.registerOutParameter(2, java.sql.Types.VARCHAR); //注意:这里是传递输入参数 proc.setLong(3, 21L); //执行存储过程 proc.execute(); //获取执行完的存储过程的返回值 result.put("name", proc.getString(1)); result.put("age", proc.getString(2)); } catch(Exception e) { //logger.error("访问数据库失败"); e.printStackTrace(); result.put("name", null); result.put("age", null); } finally { if(null != proc) { proc.close(); } } } }); return null; } }); System.out.println(result.get("name")); System.out.println(result.get("age")); }
5,测试类
package com.supan.test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.supan.dao.UserDao; import junit.framework.TestCase; public class JunitMainTest extends TestCase { public void testApringAndHibernate() { ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); UserDao ud = (UserDao)ctx.getBean("userDao"); ud.getUserNameAndInfo(); } }
6,创建数据库表,并插入一条数据
-- Create table
create table TBL_USER
(
ID NUMBER(10) not null,
NAME VARCHAR2(20 CHAR),
INFO VARCHAR2(30 CHAR),
REMARK VARCHAR2(30 CHAR),
AGE VARCHAR2(3 CHAR)
);
insert into tbl_user values(hibernate_sequence.nextval,'chenchaoyang','is a good man','hahha','26');
7,存储过程
/*创建存储过程,该存储过程三个参数,前两个是输出参数 最后一个是输入参数*/ create or replace procedure PROC_GETUSER_NAME_AGE(userName out varchar2, userAge out varchar2, userId in long) AS --声明该存储过程为“自治事物单元” PRAGMA AUTONOMOUS_TRANSACTION; --定义两个变量 v_userName varchar2(255); v_userAge varchar2(255); begin select name, info into v_userName, v_userAge from TBL_User t where t.id = userId; userName := v_userName; userAge := v_userAge; end;
8,输出结果:
chenchaoyang
is a good man
发表评论
-
取色器 转码器
2014-12-07 15:34 502很好用的取色器 -
struts导出excel并下载
2014-11-19 12:42 373Action中处理,包含下载中文文件乱码、为空的问题。 ... -
contentType
2014-11-19 12:36 555附:contentType类型. 'ez' => 'ap ... -
开发小工具
2014-10-11 22:36 421firebug1.12 适合 firefox17-20 -
处理web请求与响应的编码方式统一
2014-09-27 19:04 1746统一处理web请求与响应的编码方式即使防止出现乱码问题 ... -
web安全经验之谈1--关闭登陆页面的自动填充功能
2014-09-27 17:51 758一:浏览器都有自动保存用户输入数据和自动填充数据的能力。为了保 ... -
Hibernate 调用返回值的存储过程
2014-08-04 02:20 2809注:原创作品,转载请注明出处。 曾一度认为orac ... -
不断刷新页面的session超时控制
2014-08-03 18:53 2432注:原创作品,转载请注明出处 解决方案: 1,在页面元素加 ... -
Spring创建bean的scope选择
2014-08-03 16:03 1471注:原创作品,转 ... -
hibernate 的sqlQuery对象可以操作非映射的数据库表
2014-05-23 01:17 1111注:原创作品,分享以供交流学习,转载请注明出处。 一直 ... -
hibernate sql查询 标量,实体查询
2014-05-11 23:10 888注:原创作品,分享以供交流学习,转载请注明出处 本博文实例假 ... -
hibernate hql查询 select 语句 和 from语句
2014-05-11 21:37 3973注:原创作品,分享以 ... -
hibernate 基于cglib的 事务代理
2014-03-24 23:39 825实例:使用hibernate 事务代理完成一个事务,添 ... -
hibernate 基本事务
2014-03-24 21:45 544业务需求:增加一个人,这个人有两个地址,人是一张表, ... -
Hibernate 原生sql查询
2014-03-23 19:25 6751,Person package com.supan.bean ... -
hibernate一对多 双向 关联A(无连接表)
2014-03-17 00:27 896一,创建映射 1,多的一段 java文件中需要有一的属性,配置 ... -
hibernate多条件查询
2014-03-07 00:47 8081. Hibernate的Criteria这 ... -
javaSe中使用Hibernate
2014-03-01 18:16 488hibernate可用在javaSe中也可以用在java ... -
Spring Aop之 注解实现
2014-02-25 13:00 7361,在Spring配置文件中开启注解aop的基本开关。注意使用 ... -
hibernate 调用oracle自定义函数方法一
2014-02-12 11:33 7931,首先编写自定义函数: create or replace ...
相关推荐
本文将深入探讨如何在WinForm项目中实现配置文件的加密与解密。 首先,让我们了解`.config`文件的基本结构。`.config`文件,特别是`app.config`,是基于XML的文件,用于存储应用程序的配置设置。例如,数据库连接...
本项目提供的"一个.net配置文件加密的源代码"正是为了解决这个问题。下面我们将详细探讨.NET配置文件加密的相关知识点。 1. **配置文件结构**: .NET应用程序通常有App.config(对于桌面应用)或Web.config(对于...
本文将深入探讨如何在Spring Boot项目中利用PBEWITHHMACSHA512ANDAES-128算法对配置文件中的密码进行加密。 首先,让我们理解PBEWITHHMACSHA512ANDAES-128是什么。这是一种密码基于密钥的加密(Password-Based ...
为了提高安全性,我们可以对Tomcat连接池中数据库密码进行加密处理。具体操作流程如下: 1. **下载并修改DBCP源码**: - 首先,从官方网站下载对应Tomcat版本的Commons DBCP源码包。 - 打开`org.apache.commons....
本文将深入探讨“易语言读写加密配置项”这一主题,旨在帮助读者理解如何在易语言中实现对配置文件的加密读写操作。 首先,配置项在软件开发中扮演着重要角色,它们通常存储用户的个性化设置、应用的状态信息等。...
标题"druid实现springmvc数据库连接的用户名和密码加密"指出,我们要讨论的是如何在Spring MVC项目中利用Druid连接池进行更高级别的安全性配置,即对数据库连接的敏感信息进行加密。这通常涉及以下步骤: 1. **密码...
总结来说,Spring Boot项目中`application.yml`文件的数据库配置密码加密涉及以下步骤: 1. 添加Jasypt依赖。 2. 编写加密/解密工具类。 3. 使用工具类加密数据库密码。 4. 将加密后的密码放入`application.yml`。 5...
然后,在Spring Boot的配置文件(如`application.yml`或`application.properties`)中,设置加密密码(`jasypt.encryptor.password`),并使用`ENC()`函数将数据库密码加密。 3. **加密与解密流程** 加密过程通常...
### Spring Boot 整合 Druid 实现数据库密码加密 #### 一、引言 在实际的生产环境中,数据库的安全性非常重要,尤其是数据库连接信息中的用户名和密码。为了防止这些敏感信息被泄露,通常需要采取措施来保护这些...
本项目"配置加密之密码记录"提供了一个易语言的源码示例,旨在帮助初学者及小团队了解并实践如何在软件开发中实现配置文件的加密和密码的安全存储。易语言作为一款中国本土化的编程工具,以其简洁的语法和丰富的...
"集成jsencrypt实现密码加密传输方式.zip"这个压缩包文件显然包含了关于如何在若依(RuoYi)单体项目中集成jsencrypt库,以实现密码加密传输的详细步骤和示例。下面将详细介绍jsencrypt库以及如何在实际项目中应用它...
针对这一问题,我们可以采用JASYPT(Java Simplified Encryption Toolkit)来进行加密处理,确保配置文件的安全性。以下将详细讲解JASYPT的使用以及如何在项目部署配置文件中应用加密技术。 JASYPT是一个强大的Java...
3. **配置文件格式**:加密后的配置文件可能采用特定的格式,例如JSON、YAML或自定义格式,其中包含了加密的值。在应用启动时,`CryptPropertiesFactoryBean`会读取这些文件,并使用相应的密钥解密。 4. **解密过程...
该方法会返回一个经过MD5加密后的字符串,可以安全地存储在配置文件或数据库中。 ##### 3. 代码解释 - `HashPasswordForStoringInConfigFile`方法不仅进行了MD5加密,还进行了一些额外的安全处理,例如添加盐值...
7. **加密与安全**:对于包含敏感信息的配置文件(如API密钥、密码),应考虑对其进行加密存储。在读取时,可以使用安全的解密方法解密后再进行解析。 8. **环境变量**:在开发环境中,通常会有一些配置因环境而异...
标题 "Spring 加密工具包(kylin密码加密工具包)" 提供了我们今天要讨论的核心内容,即一个针对Spring框架的加密工具包,特别适用于Kylin项目中的密码加密。Kylin是一个开源的大数据分析平台,而密码加密对于保护数据...
以下是使用Jasypt解决Spring Boot项目配置文件中数据库密码暴露问题的步骤: 1. **添加依赖**: 首先,我们需要在`pom.xml`或`build.gradle`文件中引入Jasypt的依赖。对于Maven用户,可以在`pom.xml`中添加以下...
例如,我们可以使用AES(Advanced Encryption Standard)算法,先将原始密码加密,然后在`dbconfig.properties`中存储加密后的值: ```properties jdbc.password=encrypted_value ``` 接下来,我们需要在`spring-...
然而,由于这些信息往往包含敏感数据,因此直接明文存储在代码或配置文件中是不安全的。本文将深入探讨如何在C#中对数据库连接字符串进行加密,以确保数据的安全性。 首先,我们来了解App.config文件。在.NET框架中...
Ini文件是一种轻量级的配置文件格式,常用于存储应用程序的设置和参数。在Windows操作系统中,系统提供了API函数来支持对.ini文件的读写操作。然而,这些基础API并没有内置加密功能,使得数据可能存在安全风险。为了...