- 浏览: 776440 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
Fanatic357:
同问,请问这个 曲线 是用什么工具 监测得到的?
RocketMQ性能压测分析 -
sunshine_love:
8核 16G, 单master TPS 4w+,2m-2s- ...
RocketMQ性能压测分析 -
assertmyself:
很好,,获益良多!
jstack和线程dump分析 -
zhaoxiaoxiao:
非常赞,帮助理解了问题。今天也是遇到了这样的问题
hessian序列化bug -
wjg_java:
打不开 宕机了
博客停止更新
对发送的数据进行数据加密
发送数据时需要加密,首先是MD5加密,然后将加密结果按照附录1进行转换,参看“建设银行附录(一)”。
下面是MD5Encoder.java
package cn.ipanel.payment.business.bank.ccb.encryption;
import java.security.MessageDigest;
/**
* MD5加密解密工具类<br>
*
*
* 关于MD5的算法请参考RFC1321规范<br>
* RFC1321给出了Test suite用来检验你的实现是否正确:<br>
* MD5 ("") =d41d8cd98f00b204e9800998ecf8427e <br>
* MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661<br>
* MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72<br>
* MD5 ("message digest") =f96b697d7cb7938d525a2f31aaf161d0<br>
* MD5 ("abcdefghijklmnopqrstuvwxyz") =c3fcd3d76192e4007dfb496cca67e13b
*
* @author wangxiaoxue
*
* 传入参数:一个字节数组 传出参数:字节数组的 MD5 结果字符串
*/
public class MD5Encoder {
/**
* 对二进制数组进行MD5算法加密,并将加密结果按照建行的协议算法进行转换
* @param source
* @return
*/
public static byte[] encode(byte[] source) {
byte[] result = new byte[0];
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(source);
// MD5 的计算结果是一个 128 位的长整数,用字节表示就是 16 个字节
result = md.digest();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static void main(String xu[]) { // 计算 "a" 的 MD5
// 代码,应该为:0cc175b9c0f1b6a831c399e269772661
System.out.println(ByteUtil.byteToChar(MD5Encoder.encode("".getBytes())));
}
}
为了以后项目的扩展性,写了一个基础加密解密类,Encoder.java,代码如下:
还写了一个基础加密类
package cn.ipanel.payment.business.bank.ccb.encryption;
import java.security.MessageDigest;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 基础加密模块
* @author wangxiaoxue
*
*/
public abstract class Encoder {
public static final String KEY_SHA = "SHA";
public static final String KEY_MD5 = "MD5";
/**
* MAC算法可选以下多种算法
*
* <pre>
* HmacMD5
* HmacSHA1
* HmacSHA256
* HmacSHA384
* HmacSHA512
* </pre>
*/
public static final String KEY_MAC = "HmacMD5";
/**
* BASE64解密
*
* @param key
* @return
* @throws Exception
*/
public static byte[] decryptBASE64(String key) throws Exception {
return (new BASE64Decoder()).decodeBuffer(key);
}
/**
* BASE64加密
*
* @param key
* @return
* @throws Exception
*/
public static String encryptBASE64(byte[] key) throws Exception {
return (new BASE64Encoder()).encodeBuffer(key);
}
/**
* MD5加密
*
* @param data
* @return
* @throws Exception
*/
public static byte[] encryptMD5(byte[] data) throws Exception {
MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
md5.update(data);
return md5.digest();
}
/**
* SHA加密
*
* @param data
* @return
* @throws Exception
*/
public static byte[] encryptSHA(byte[] data) throws Exception {
MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
sha.update(data);
return sha.digest();
}
/**
* 初始化HMAC密钥
*
* @return
* @throws Exception
*/
public static String initMacKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
SecretKey secretKey = keyGenerator.generateKey();
return encryptBASE64(secretKey.getEncoded());
}
/**
* HMAC加密
*
* @param data
* @param key
* @return
* @throws Exception
*/
public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return mac.doFinal(data);
}
}
发表评论
-
dubbo问题总结
2012-03-14 10:00 2983任何诡异的现象必然能找到问题原因,程序是不会骗人的 ... -
memcached客户端源码分析
2011-09-08 17:28 19950memcached的java客户端有好 ... -
说说单例模式
2011-05-23 11:12 3334单例模式?多么简单!也许吧,可是要通过简单的现象, ... -
jstack和线程dump分析
2011-05-12 13:48 180158一:jstack jstack命令的语法格式: js ... -
说说new Integer和Integer.valueOf
2010-11-11 15:04 6593看看这两个语句 Integer a=new Integ ... -
线程安全总结(二)
2010-11-11 12:36 5609关于线程安全总结(-)请看 http://www.iteye ... -
java线程安全总结
2010-11-09 20:48 15639最近想将java基 ... -
hadoop架构
2010-09-07 19:41 2684该文章我转自IBM开发者社区 ... -
HashMap深入分析
2010-09-03 19:36 5830java.util.HashMap是很常见的 ... -
CountDownLatch
2010-09-02 20:03 2964java的并发包真 ... -
ThreadPoolExecutor相关类的分析
2010-09-02 19:27 4597一:ThreadPoolExecutor ... -
随便说说
2010-09-01 19:29 2100这两天给系统 ... -
一波三折的rmi调用
2010-08-18 18:02 9854很久以前写了基于rmi的分布式java程序,现 ... -
java内存查看与分析
2010-08-07 17:03 22481业界有很多强 ... -
java动态代理之cglib
2010-06-22 17:27 2794cglib是一个 ... -
java动态代理随笔二
2010-06-22 16:29 1879jdk的动态代 ... -
java动态代理随笔一
2010-06-22 14:49 2076先说一下java class的加载机制和与cla ... -
关于hashcode和equals
2010-04-19 14:58 3389前几天有个同事问我,String a=" ... -
建设银行对接(五)
2010-02-09 17:34 2559public static void testVerify ... -
建设银行对接(四)
2010-02-09 17:32 3091上接“建设银行对接(三)”,javaeye的文章字数限制也太少 ...
相关推荐
-- 中国建设银行商户通知验签配置文件 --> <!-- 通讯端口1024~65535之间未被使用的端口 --> <value>55533 <!-- 通讯端口1024~65535之间未被使用的端口 --> <value>5 <!-- 可按照不同的柜台号配置不同...
《软件系统平台对接接口方案详解》 在信息技术领域,软件系统平台对接接口方案的设计与实施是构建高效、稳定、可扩展的信息系统的关键环节。本文将深入探讨系统接口设计的各个方面,包括接口设计原则、接口定义与...
【建设银行善付通支付结算接入文档】是指导企业如何接入和使用善付通服务的详细技术指南。善付通是建设银行在善融商务平台上为供应链企业提供的一种高效、便捷的支付结算解决方案,旨在帮助企业优化订单管理、协同...
建设银行银企直联主要应用于企业的资金管理、资金归集、资金调拨等方面。通过银企直联系统,企业可以实现对其银行账户的全面管理,包括余额查询、明细查询、转账、代发工资等。同时,企业还可以利用银企直联系统进行...
【网银外联平台用户手册】是针对使用Java开发的企业网银系统与银行外联平台进行接口对接的指导文档。该手册主要介绍了如何利用Jar包版本的外联平台实现与银行系统的交互,无需安装额外的客户端服务。手册的版本为V...
7. **邮乐/ECShop2.7.2/分销王/优购/阿里巴巴/库巴/聚美优品/聚美海淘/趣天麦网/走秀/建行善融/ShopEx_general/V+/苏宁易购/口袋通/唯品会/美丽说/工商银行/蘑菇街/贝贝网/楚楚街/折800/口袋购物(微店)/微盟/微盟萌...
建行银行支付demo,集成了建行银行支付功能,内容很详细 建行银行支付demo,集成了建行银行支付功能,内容很详细
为缩小与先进地区的差距,需要进一步明确战略定位,加强政策引导,提升金融服务能力,强化企业上市培育,优化市场环境,完善风险防控机制,以实现更高效、更全面地对接多层次资本市场,助力工业强县建设。...
在IT行业中,建行龙支付下单模拟器脚本是一种用于测试和自动化支付流程的工具,主要服务于商户在对接中国建设银行的龙支付接口时进行功能验证和性能测试。这个脚本能够模拟真实的商户操作,无需实际交易即可完成支付...
该java源代码将建行互联网银企被扫支付接口java版加密及验签Demo 封装成jar包,方便nodejs调用。 1.将建行Java版加密Demo打包成jar包:CCBParam.jar。并将jar包放到服务器的相应文件夹下。 2.根据订单号、金额、付款...
【商业银行对接长江经济带战略】 长江经济带是中国经济发展的重要战略之一,旨在重塑区域发展格局,推动东中西三大区域的联动和协调发展。2014年,长江经济带被提升为国家战略,与“一带一路”和“京津冀协同发展”...
"建设银行高端客户答谢会活动执行方案" 以下是从给定的文件中生成的相关知识点: 1. 活动策划:本文档提供了一个完整的活动执行方案,包括活动名称、目的、时间、地点、内容、流程等详细信息。这项活动的目的是...
【新版建行B2B演示软件】是一款专为中国建设银行(建行)的企业客户设计的交互式演示系统,主要用于展示和体验IBS5.0_B2BDemo平台的功能与服务。这款软件旨在帮助企业在实际应用前,理解并熟悉B2B(Business-to-...
互联网+智慧银行金融平台建设综合解决方案
【建设银行高端客户答谢会活动执行方案】是银行业务中一种重要的客户关系管理策略,旨在维护和增强与高端客户的紧密联系,提升品牌形象,优化客户服务体系,并推动业绩增长。活动以"睿智人生·幸福圆舞曲"为主题,...
【中国建设银行数字化经营优秀案例】反映了金融巨头如何利用互联网技术进行企业内部的数智化转型,提升培训效率和降低成本。在这个案例中,建行采用了保利威提供的“直播中台”和“直播云”解决方案,构建了全新的...
福建省建设银行“短信通”项目应用方案主要针对的是银行行业的移动信息化需求,旨在提升银行业务效率,优化客户服务体验,以及增强内部沟通与管理。以下是该项目的详细解析: 1. 银行移动信息化需求分析: - 银行...
本工具类可用于对接支付时生成加密数据字段,方便同学们尽快完成任务。博主主要是用这个工具类生成的mac值用于对接建行支付