`
jameswxx
  • 浏览: 776440 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

建设银行对接(二)

    博客分类:
  • 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);  

 

    }  

} 

 

0
0
分享到:
评论

相关推荐

    建行互联网被扫支付接口Socket商户验签jar包

    -- 中国建设银行商户通知验签配置文件 --&gt; &lt;!-- 通讯端口1024~65535之间未被使用的端口 --&gt; &lt;value&gt;55533 &lt;!-- 通讯端口1024~65535之间未被使用的端口 --&gt; &lt;value&gt;5 &lt;!-- 可按照不同的柜台号配置不同...

    软件系统平台对接接口方案

    《软件系统平台对接接口方案详解》 在信息技术领域,软件系统平台对接接口方案的设计与实施是构建高效、稳定、可扩展的信息系统的关键环节。本文将深入探讨系统接口设计的各个方面,包括接口设计原则、接口定义与...

    建设银行【善付通】支付结算接入文档

    【建设银行善付通支付结算接入文档】是指导企业如何接入和使用善付通服务的详细技术指南。善付通是建设银行在善融商务平台上为供应链企业提供的一种高效、便捷的支付结算解决方案,旨在帮助企业优化订单管理、协同...

    建设银行银企直联对接系统资料

    建设银行银企直联主要应用于企业的资金管理、资金归集、资金调拨等方面。通过银企直联系统,企业可以实现对其银行账户的全面管理,包括余额查询、明细查询、转账、代发工资等。同时,企业还可以利用银企直联系统进行...

    _网银外联平台用户手册(Jar包版)_V1.11_201901241

    【网银外联平台用户手册】是针对使用Java开发的企业网银系统与银行外联平台进行接口对接的指导文档。该手册主要介绍了如何利用Jar包版本的外联平台实现与银行系统的交互,无需安装额外的客户端服务。手册的版本为V...

    E店宝与各电商平台对接--条形码匹配关系表

    7. **邮乐/ECShop2.7.2/分销王/优购/阿里巴巴/库巴/聚美优品/聚美海淘/趣天麦网/走秀/建行善融/ShopEx_general/V+/苏宁易购/口袋通/唯品会/美丽说/工商银行/蘑菇街/贝贝网/楚楚街/折800/口袋购物(微店)/微盟/微盟萌...

    android 建行支付demo

    建行银行支付demo,集成了建行银行支付功能,内容很详细 建行银行支付demo,集成了建行银行支付功能,内容很详细

    关于某县域对接多层次资本市场地思考.doc

    为缩小与先进地区的差距,需要进一步明确战略定位,加强政策引导,提升金融服务能力,强化企业上市培育,优化市场环境,完善风险防控机制,以实现更高效、更全面地对接多层次资本市场,助力工业强县建设。...

    建行龙支付下单模拟器脚本可模拟商户发起支付订单

    在IT行业中,建行龙支付下单模拟器脚本是一种用于测试和自动化支付流程的工具,主要服务于商户在对接中国建设银行的龙支付接口时进行功能验证和性能测试。这个脚本能够模拟真实的商户操作,无需实际交易即可完成支付...

    nodejs调用建行互联网银企被扫支付接口加密及验签Demo+java封装jar包

    该java源代码将建行互联网银企被扫支付接口java版加密及验签Demo 封装成jar包,方便nodejs调用。 1.将建行Java版加密Demo打包成jar包:CCBParam.jar。并将jar包放到服务器的相应文件夹下。 2.根据订单号、金额、付款...

    商业银行如何对接长江经济带战略.pptx

    【商业银行对接长江经济带战略】 长江经济带是中国经济发展的重要战略之一,旨在重塑区域发展格局,推动东中西三大区域的联动和协调发展。2014年,长江经济带被提升为国家战略,与“一带一路”和“京津冀协同发展”...

    建设银行高端客户答谢会活动执行方案.doc

    "建设银行高端客户答谢会活动执行方案" 以下是从给定的文件中生成的相关知识点: 1. 活动策划:本文档提供了一个完整的活动执行方案,包括活动名称、目的、时间、地点、内容、流程等详细信息。这项活动的目的是...

    新版建行B2B演示软件

    【新版建行B2B演示软件】是一款专为中国建设银行(建行)的企业客户设计的交互式演示系统,主要用于展示和体验IBS5.0_B2BDemo平台的功能与服务。这款软件旨在帮助企业在实际应用前,理解并熟悉B2B(Business-to-...

    互联网+智慧银行金融平台建设综合解决方案.ppt

    互联网+智慧银行金融平台建设综合解决方案

    建设银行高端客户答谢会活动执行方案_营销推广 沙龙运营 活动策划方案.doc

    【建设银行高端客户答谢会活动执行方案】是银行业务中一种重要的客户关系管理策略,旨在维护和增强与高端客户的紧密联系,提升品牌形象,优化客户服务体系,并推动业绩增长。活动以"睿智人生·幸福圆舞曲"为主题,...

    建行数字化经营优秀案例.docx

    【中国建设银行数字化经营优秀案例】反映了金融巨头如何利用互联网技术进行企业内部的数智化转型,提升培训效率和降低成本。在这个案例中,建行采用了保利威提供的“直播中台”和“直播云”解决方案,构建了全新的...

    福建省建设银行“短信通”项目应用.doc

    福建省建设银行“短信通”项目应用方案主要针对的是银行行业的移动信息化需求,旨在提升银行业务效率,优化客户服务体验,以及增强内部沟通与管理。以下是该项目的详细解析: 1. 银行移动信息化需求分析: - 银行...

    java 建行支付 Mac值生成 工具类 PayMd5.java

    本工具类可用于对接支付时生成加密数据字段,方便同学们尽快完成任务。博主主要是用这个工具类生成的mac值用于对接建行支付

Global site tag (gtag.js) - Google Analytics