- 浏览: 1382644 次
- 性别:
- 来自: 江西
文章分类
- 全部博客 (287)
- oracle (30)
- Java (73)
- MySQL (16)
- Myeclipse/eclipse (12)
- javascript (15)
- JSP/Servlet (7)
- maven (14)
- AJAX (2)
- JQuery (9)
- tomcat (8)
- spring (21)
- Linux (28)
- PHP (9)
- UI (1)
- 编程错误及处理 (38)
- 多线程 (18)
- hibernate (10)
- Web Service (3)
- struts2 (6)
- log4j (3)
- SVN (4)
- DWR (1)
- lucene (1)
- 正则表达式 (4)
- jstl (2)
- SSL (3)
- POI (1)
- 网络编程 (1)
- 算法 (2)
- xml (4)
- 加密解密 (1)
- IO (7)
- jetty (2)
- 存储过程 (1)
- SQL Server (1)
- MongoDB (1)
- mybatis (1)
- ETL (1)
- Zookeeper (1)
- Hadoop (5)
- Redis (1)
- spring cloud (1)
最新评论
-
ron.luo:
牛逼,正解!
maven设定项目编码 -
lichaoqun:
java.sql.SQLException: Can't call commit when autocommit=true -
Xujian0000abcd:
Thanks...
Cannot proxy target class because CGLIB2 is not available. Add CGLIB to the clas -
renyuan2ni:
[i][b][u]引用[list]
[*][img][flas ...
Manual close is not allowed over a Spring managed SqlSession -
851228082:
宋建勇 写道851228082 写道<!-- 文件拷贝时 ...
maven设定项目编码
在开发和设计过程中,通常需要对一些配置数据进行加密,如数据库的连接方式等,在读取到加密数据后,我们必须解密后才能使用。
以下是来自书籍《Spring 3.x 企业应用开发实战》示例,可做参考!
一、编写加密代码DESUtil.java
二、继承PropertyPlaceholderConfigurer类并实现接口convertProperty
三、编写属性文件保存类,测试时用
四、创建属性文件
song.properties
song1.properties
其中
song.properties保存的是密文,如下:
username=Pa3HE99AWOg=
password=QAHlVoUc49w=
song.properties保存的是明文,如下:
username1=songjy
password1=123456
五、编写Spring配置文件
六、测试类编写
MD5加密效果如下:
DES对称加密的实现及其源代码
用 Java 解密 C# 加密的数据(DES)
Java文件加密-spring属性文件加密
Spring获取Bean的几种方式
MD5,salt,SHA,PBKDF2加密
备注:本次示例使用的Spring版本是:spring-core-3.2.4.RELEASE
以下是来自书籍《Spring 3.x 企业应用开发实战》示例,可做参考!
一、编写加密代码DESUtil.java
/** * DESUtil.java * cn.com.songjy * Function: TODO * * version date author * ────────────────────────────────── * 1.0 2013-9-25 songjy * * Copyright (c) 2013, TNT All Rights Reserved. */ package cn.com.songjy; import java.security.Key; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; /** * ClassName:DESUtil * * @author songjy * @version 1.0 * @since v1.0 * @Date 2013-9-25 下午4:19:48 */ public class DESUtil { private static Log log = LogFactory.getLog(DESUtil.class); public static void main(String[] args) { if (null != args) if (1 <= args.length) for (String src : args) log.info(src + ":" + encrypt(src)); } /* 1、指定DES加密解密所用的密钥 */ private static Key key; private static String KEY_STR = "myKey"; static { try { KeyGenerator generator = KeyGenerator.getInstance("DES"); generator.init(new SecureRandom(KEY_STR.getBytes())); key = generator.generateKey(); generator = null; } catch (NoSuchAlgorithmException e) { log.error(e.getMessage(), e); } } /* 2、对字符串进行DES加密,返回BASE64编码的加密字符串 */ public static String encrypt(String src/* 明文 */) { BASE64Encoder base64en = new BASE64Encoder(); try { byte[] src_byte = src.getBytes("UTF-8"); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] final_byte = cipher.doFinal(src_byte); return base64en.encode(final_byte); } /* * catch (UnsupportedEncodingException e) { log.info(e.getMessage(), e); * } catch (NoSuchAlgorithmException e) { log.info(e.getMessage(), e); } * catch (NoSuchPaddingException e) { log.info(e.getMessage(), e); } */catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } } /* 3、对BASE64编码的加密字符串进行解密,返回解密后的字符串 */ public static String decrypt(String src/* 密文 */) { BASE64Decoder base64de = new BASE64Decoder(); try { byte[] src_byte = base64de.decodeBuffer(src); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, key); byte[] decrypt_byte = cipher.doFinal(src_byte); return new String(decrypt_byte, "UTF-8"); } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } } }
二、继承PropertyPlaceholderConfigurer类并实现接口convertProperty
/** * EncryptPropertyPlaceholderConfigurer.java * cn.com.songjy * Function: TODO * * version date author * ────────────────────────────────── * 1.0 2013-9-25 songjy * * Copyright (c) 2013, TNT All Rights Reserved. */ package cn.com.songjy; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer; /** * ClassName:EncryptPropertyPlaceholderConfigurer * * @author songjy * @version 1.0 * @since v1.0 * @Date 2013-9-25 下午4:22:13 */ public class EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer { private Log log = LogFactory.getLog(EncryptPropertyPlaceholderConfigurer.class); /** * (non-Javadoc) * @see org.springframework.beans.factory.config.PropertyResourceConfigurer#convertProperty(java.lang.String, java.lang.String) */ @Override protected String convertProperty(String propertyName, String propertyValue) { if(encryptPropNames.contains(propertyName))//属性propertyName的值加密了,需要解密 return DESUtil.decrypt(propertyValue); return super.convertProperty(propertyName, propertyValue); } private List<String> encryptPropNames;//保存加密的属性字段 public List<String> getEncryptPropNames() { return encryptPropNames; } public void setEncryptPropNames(List<String> encryptPropNames) { for (String string : encryptPropNames) { log.info("属性"+string+"的值已加密"); } this.encryptPropNames = encryptPropNames; } }
三、编写属性文件保存类,测试时用
/** * MyConfig.java * cn.com.songjy * Function: TODO * * version date author * ────────────────────────────────── * 1.0 2013-9-26 songjy * * Copyright (c) 2013, TNT All Rights Reserved. */ package cn.com.songjy; /** * ClassName:MyConfig * * @author songjy * @version 1.0 * @since v1.0 * @Date 2013-9-26 上午9:31:56 */ public class MyConfig { private String username; private String password; private String username1; private String password1; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername1() { return username1; } public void setUsername1(String username1) { this.username1 = username1; } public String getPassword1() { return password1; } public void setPassword1(String password1) { this.password1 = password1; } }
四、创建属性文件
song.properties
song1.properties
其中
song.properties保存的是密文,如下:
username=Pa3HE99AWOg=
password=QAHlVoUc49w=
song.properties保存的是明文,如下:
username1=songjy
password1=123456
五、编写Spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <bean class="cn.com.songjy.EncryptPropertyPlaceholderConfigurer"> <property name="encryptPropNames"> <list> <value>username</value> <value>password</value> </list> </property> <property name="locations"> <list> <value>classpath:cn/com/songjy/song.properties</value> <value>classpath:cn/com/songjy/song1.properties</value> </list> </property> </bean> <bean id="my" class="cn.com.songjy.MyConfig"> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="username1" value="${username1}"/> <property name="password1" value="${password1}"/> </bean> </beans>
六、测试类编写
/** * Test.java * cn.com.songjy * Function: TODO * * version date author * ────────────────────────────────── * 1.0 2013-9-26 songjy * * Copyright (c) 2013, TNT All Rights Reserved. */ package cn.com.songjy; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; /** * ClassName:Test * * @author songjy * @version 1.0 * @since v1.0 * @Date 2013-9-26 上午9:35:31 */ public class Test { /** * @method main * @param args * @since v1.0 */ public static void main(String[] args) { ApplicationContext ac = new ClassPathXmlApplicationContext("cn/com/songjy/beans.xml"); //MyConfig my = (MyConfig) ac.getBean("my"); MyConfig my = ac.getBean(MyConfig.class); System.out.println(my.getUsername().equals(my.getUsername1())); System.out.println(my.getPassword().equals(my.getPassword1())); } }
public void encrypt_MD5() { String 明文密码 = "123456"; try { java.security.MessageDigest md = java.security.MessageDigest .getInstance("MD5"); md.update(明文密码.getBytes()); byte b[] = md.digest(); int i; StringBuffer buf = new StringBuffer(); for (int offset = 0; offset < b.length; offset++) { i = b[offset]; if (i < 0) i += 256; if (i < 16) buf.append("0"); buf.append(Integer.toHexString(i)); } System.out.println("密文: " + buf.toString());// 32位的加密 System.out.println("密文: " + buf.toString().substring(8, 24));// 16位的加密 } catch (java.security.NoSuchAlgorithmException e) { e.printStackTrace(); } }
MD5加密效果如下:
DES对称加密的实现及其源代码
用 Java 解密 C# 加密的数据(DES)
Java文件加密-spring属性文件加密
Spring获取Bean的几种方式
MD5,salt,SHA,PBKDF2加密
备注:本次示例使用的Spring版本是:spring-core-3.2.4.RELEASE
发表评论
-
Failed to introspect annotations: interface com.xxx
2016-07-16 17:22 3886在使用maven打包发布项目时发现在tomcat容器中正常启动 ... -
REST API Design备忘
2016-07-12 15:26 645GET /collection:返回资源对象的列表(数组) ... -
java.lang.NoSuchMethodError: org.springframework.expression.spel.SpelParserConfi
2015-07-30 09:41 9993错误信息: [WARNING] FAILED remoting ... -
spring aop未执行问题记录
2015-07-03 11:54 1442在类com.ipharmacare.plat.service. ... -
Spring AOP配置不起作用
2015-01-17 14:27 0[url=http://blog.csdn.net/mmm33 ... -
class org.springframework.scheduling.quartz.CronTriggerBean
2014-05-09 08:56 2916提示错误信息:java.lang.IncompatibleCl ... -
Failed to read schema document
2013-09-17 15:21 4893使用 Spring Security 构建一个 HTTP 基本 ... -
spring拦截器配置问题<mvc:annotation-driven/>
2013-09-09 11:10 14030原始配置如下:<mvc:annotation-drive ... -
spring整合DWR步骤简单说明
2013-04-26 14:21 1276一、导入dwr包【dwr.jar】 ... -
Spring中PropertyPlaceholderConfigurer的使用
2012-08-23 14:29 1812<context:property-placeholde ... -
spring AOP配置
2012-08-20 15:03 1888耗时监控 package cn.com.tcgroup.yun ... -
454 Authentication failed, please open smtp flag first!
2012-08-03 18:37 12098用spring发送邮件,使用的是QQ邮箱,出现以下错误信息: ... -
spring MVC疑问-项目示例
2012-06-18 13:30 0applicationContext.xml <?xm ... -
Spring配置项<context:annotation-config/>解释说明
2012-06-14 11:47 1601在基于主机方式配置Spri ... -
axis2+spring集成 服务端及客户端
2012-06-05 16:56 2356整个项目代码见附件songjy-axis2spring-1.0 ... -
Spring AOP进行日志记录,管理 (使用Spring的拦截器功能获取对action中每个方法的调用情况,在方法调用前
2012-06-05 10:38 4163在java开发中日志的管理有很多种。我一般会使用过滤器,或者是 ... -
spring mvc事务管理不起作用-备忘
2012-06-04 16:58 2240不起作用前代码: ComusersController.ja ... -
Spring MVC 直接访问静态文件(html、jpg、js...)
2012-06-04 14:11 5765首先在spring-servle.xml文件中加入如下代码: ... -
freemarker spring hibernate 整合示例项目
2012-05-30 12:25 0User.java package com.mvc.enti ... -
Spring MVC 文件上传 Maven
2012-05-28 18:16 8400FileUploadController.java pack ...
相关推荐
第11讲:深入理解指针(1)
springboot整合 freemarker方法
《同行者4.1.2语音助手:车机版安装详解》 在现代科技日新月异的时代,智能车载设备已经成为了汽车生活的重要组成部分。"同行者4.1.2"便是这样一款专为车机设计的语音助手,旨在提供更为便捷、安全的驾驶体验。该版本针对掌讯全系列设备进行了兼容优化,让车主能够轻松实现语音控制,减少驾驶过程中的手动操作,提升行车安全性。 我们来了解下"同行者4.1.2"的核心功能。这款语音助手集成了智能语音识别技术,用户可以通过简单的语音指令完成导航、音乐播放、电话拨打等一系列操作,有效避免了因操作手机或车机带来的分心。此外,其强大的语义理解和自学习能力,使得它能逐步适应用户的口音和习惯,提供更个性化的服务。 在安装过程中,用户需要注意的是,"同行者4.1.2"包含了四个核心组件,分别是: 1. TXZCore.apk:这是同行者语音助手的基础框架,包含了语音识别和处理的核心算法,是整个应用运行的基础。 2. com.txznet.comm.base.BaseApplication.apk:这个文件可能包含了应用的公共模块和基础服务,为其他组件提供支持。 3. TXZsetting.apk:这
市场拓展主管绩效考核表
“线上购车3D全方位体验:汽车模型展示与个性化定制功能”,three.js案例- 线上购车3d展示(源码) 包含内容:1.汽车模型展示;2.汽车肤;3.轮毂部件更;4.开关车门动画;5.汽车尺寸测量;6.自动驾驶;7.镜面倒影;8.hdr运用;9.移动端适配; 本为html+css+three.js源码 ,核心关键词:three.js案例; 线上购车3D展示; 汽车模型展示; 汽车换肤; 轮毂部件更换; 开关车门动画; 汽车尺寸测量; 自动驾驶; 镜面倒影; HDR运用; 移动端适配; HTML+CSS+three.js源码。,"Three.js源码:线上购车3D展示案例,含汽车模型、换肤、轮毂更换等九大功能"
数据名称:2000-2022年各县市区主要社会经济发展指标面板数据 数据类型:dta格式 数据来源:中国县域统计
一、智慧环卫管理平台的建设背景与目标 智慧环卫管理平台的建设源于对环卫管理全面升级的需求。当前,城管局已拥有139辆配备车载GPS系统、摄像头和油耗传感器的环卫车辆,但环卫人员尚未配备智能移动终端,公厕也缺乏信息化系统和智能终端设备。为了提升环卫作业效率、实现精细化管理并节省开支,智慧环卫管理平台应运而生。该平台旨在通过信息化技术和软硬件设备,如车载智能终端和环卫手机App,实时了解环卫人员、车辆的工作状态、信息和历史记录,使环卫作业管理透明化、精细化。同时,平台还期望通过数据模型搭建和数据研读,实现更合理的环卫动态资源配置,为环卫工作的科学、健康、持续发展提供决策支持。 二、智慧环卫管理平台的建设内容与功能 智慧环卫管理平台的建设内容包括运行机制体制建设、业务流程设计、智慧公厕系统建设、网络建设、主机和储存平台需求、平台运维管理体系、硬件标准规范体系以及考核评价体系等多个方面。其中,智慧公厕系统建设尤为关键,它能实时监控公厕运行状态,保障公厕的清洁和正常运行。平台建设还充分利用了现有的电子政务网络资源,并考虑了有线和无线网络的需求。在功能上,平台通过普查、整合等手段全面收集环卫车辆、企业、人员、设施、设备等数据,建立智慧环卫基础数据库。利用智能传感、卫星定位等技术实现环卫作业的在线监管和远程监控,实现对道路、公共场所等的作业状况和卫生状况的全面监管。此外,平台还建立了环卫作业网格化管理责任机制,实现从作业过程到结果的全面监管,科学评价区域、部门、单位和人员的作业效果。 三、智慧环卫管理平台的效益与风险规避 智慧环卫管理平台的建设将带来显著的环境、经济和管理效益。环境方面,它将有力推进环境卫生监管服务工作,改善环境卫生状况,为人民群众创造更加清洁、卫生的工作和生活环境。经济方面,通过智慧化监管,大大降低了传统管理手段的成本,提高了监管的准确性和效率。管理方面,平台能够追踪溯源市民反映的问题,如公厕异味、渣土车辆抛洒等,并找到相应的责任单位进行处置,防止类似事件再次发生。同时,平台还拥有强大的预警机制功能,能够在很多环卫问题尚未出现前进行处置。然而,平台建设也面临一定的风险,如部门协调、配合问题,建设单位选择风险以及不可预测的自然灾害等。为了规避这些风险,需要加强领导、统一思想,选择优秀的系统集成商承接项目建设,并做好计算机和应用系统的培训工作。同时,也要注意标准制定工作和相关法律法规的制定工作,以保证系统建设完成后能够真正为环卫管理工作带来便利。
36 -企业管理主管绩效考核表1
1.1 -1.4 工程代码
USDT合约,USDT智能合约
基于姿态估计三维人脸形状重建.pdf
一般员工绩效考核表模板(通用版) (2)
全国各省295地级市互联网普及率、互联网用户数、每百人互联网宽带用户(2011-2022年) 数据年份:2011-2022年(2022存在部分缺失) 数据范围:全国各省295个地级市 数据来源:地方统计局
一、各省、分行业CO2排放、283个地级市碳排放及计算过程 2.分行业二氧化碳排放量 在这里插入图片描述 3、280多个地级市碳排放及计算过程 二、碳中和文献、最新政策、碳金融数据+数学建模 1.二氧化碳减排规划,碳金融数据收集及数学建模 2.碳中和政策和下载量最高的碳中和论文 三、碳排放+碳市场+碳交易+碳中和+碳排放核算Excel自动计算表 全行业碳排放核算Excel自动计算表 四、碳交易数据 五、主要能源碳排放计算参数
第20讲:自定义类型:结构体
视觉跟踪算法综述.pdf
MATLAB超效率SBM-DEA模型代码详解:简易操作指南及期望与非期望产出的超效率分析,附Malmquist指数与分解功能,MATLAB的超效率SBM-DEA模型代码(有安装教程和内容讲解之类的东西),操作很简单 可以做期望产出和非期望产出的超效率和非超效率sbm模型和Malmquist指数和分解 ,MATLAB; SBM-DEA模型; 超效率SBM-DEA; 安装教程; 内容讲解; 期望产出; 非期望产出; 超效率与非超效率sbm模型; Malmquist指数; 分解。,"MATLAB超效SBM-DEA模型代码:非期望产出分析的便捷工具"
人事行政主管绩效考核评分表
人力资源管理工具绩效考核excel模板