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

建设银行对接(四)

    博客分类:
  • java
阅读更多

上接“建设银行对接(三)”,javaeye的文章字数限制也太少了点吧,一篇文章连一个类代码都贴不完,这类代码也不长啊。

  /**   

     * 用私钥加密 

     * @param data 

     * @param key 

     * @return 

     * @throws Exception 

     */ 

    public static byte[] encryptByPrivateKey(byte[] data, byte[] key)  

            throws Exception {  

        // 对密钥解密  

        //byte[] keyBytes = decryptBASE64(key);  

 

        // 取得私钥  

        PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(key);  

        KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);  

        Key privateKey = keyFactory.generatePrivate(pkcs8KeySpec);  

 

        // 对数据加密  

        Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());  

        cipher.init(Cipher.ENCRYPT_MODE, privateKey);  

 

        return cipher.doFinal(data);  

    }   

 

/** 

     * 取得私钥 

     *  

     * @param keyMap 

     * @return 

     * @throws Exception 

     */ 

    public static byte[] getPrivateKey(Map<String, Object> keyMap)  

            throws Exception {   

        Key key = (Key) keyMap.get(PRIVATE_KEY);  

 

        return key.getEncoded();  

    }  

 

    /** 

     * 取得公钥 

     *  

     * @param keyMap 

     * @return 

     * @throws Exception 

     */ 

    public static byte[] getPublicKey(Map<String, Object> keyMap)  

            throws Exception {  

        Key key = (Key) keyMap.get(PUBLIC_KEY);  

 

        return key.getEncoded();  

    }  

 

    /** 

     * 初始化密钥 

     *  

     * @return 

     * @throws Exception 

     */ 

    public static Map<String, Object> initKey() throws Exception {  

        KeyPairGenerator keyPairGen = KeyPairGenerator  

                .getInstance(KEY_ALGORITHM);  

        keyPairGen.initialize(1024);  

 

        KeyPair keyPair = keyPairGen.generateKeyPair();  

 

        // 公钥  

        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();

 

        // 私钥  

        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();  

 

        Map<String, Object> keyMap = new HashMap<String, Object>(2);  

 

        keyMap.put(PUBLIC_KEY, publicKey);  

        keyMap.put(PRIVATE_KEY, privateKey);  

        return keyMap;  

    }  

} 

 

 

下面是建设银行服务类

 

package cn.ipanel.payment.business.bank.ccb;

import cn.ipanel.payment.business.bank.BankException;

import cn.ipanel.payment.business.bank.ccb.encryption.ByteUtil;

import cn.ipanel.payment.business.bank.ccb.encryption.Encoder;

import cn.ipanel.payment.business.bank.ccb.encryption.RSAEncoder;

 

 

/**

 * 建设银行服务

 * @author wangxiaoxue

 *

 */

public class CCBBankService{

         

    /**

     * 对建行返回的数据进行数字签名校验,校验算法如下:<br>

     * 1:将签名字符串和公钥转换成二进制格式<br>

     * 2:使用公钥进行签名的逆运算<br>

     * 3:使用标准MD5算法运算原文<br>

     * 4:比较12结果

     * @param  signature  数字签名字符串

     * @param  content    原文字符串

     * @param  publicKey  公钥字符串

     */

          public static boolean verifySignature(String signature,String content,String publicKey) throws BankException {

                   boolean status=false;

                   try {

                            //对原文进行MD5加密

                            byte[] md5bytes = Encoder.encryptMD5(content.getBytes());

                           

                            //对签名字符串进行逆运算,将16进制字符串按照约定算法转换为二进制数据

                            byte[] signbytes = ByteUtil.charToByte(signature);

                           

            //对公钥字符串进行逆运算,将16进制字符串按照约定算法转换为二进制数据

                            byte[] keybytes = ByteUtil.charToByte(publicKey);

                           

                            //校验

                            status = RSAEncoder.verify(md5bytes, keybytes, signbytes);

                   } catch (Exception e) {

                            e.printStackTrace();

                            throw new BankException("校验数字签名过程出现错误");

                   }                

                   return status;

          }

         

         

          /**

           * 加密发送的内容

           * @param senddata  发送的内容原文

           * @return  加密后的内容

           * @throws BankException

           */

          public static String encryptSenddata(String senddata)throws BankException{

                   String result=null;

                   try {

                            result= ByteUtil.byteToChar(Encoder.encryptMD5(senddata.getBytes()));

                   } catch (Exception e) {

                            e.printStackTrace();

                            throw new BankException("加密过程出现错误");

                   }       

                   return result;

          }

 

分享到:
评论
1 楼 ymwcwee 2012-05-14  
请问LZ,这个需要建行授权什么文件吗?还是任何人都可以拿来使用的,我想把支付程序嵌入到我的程序里可以吗?

相关推荐

    建行互联网被扫支付接口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/口袋购物(微店)/微盟/微盟萌...

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

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

    android 建行支付demo

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

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

    在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值用于对接建行支付

    建设银行对SM集团供应链的金融服务方案设计.docx

    总的来说,建设银行对SM集团的金融服务方案设计旨在构建一个以核心企业为中心,融合信息、物流、资金的高效金融生态系统,通过深度合作,实现银企双赢,促进整个供应链的健康发展。这不仅是银行业务创新的体现,也是...

Global site tag (gtag.js) - Google Analytics