`
jameswxx
  • 浏览: 771976 次
  • 性别: 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,这个需要建行授权什么文件吗?还是任何人都可以拿来使用的,我想把支付程序嵌入到我的程序里可以吗?

相关推荐

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

    善付通是在善融商务建立的,为供应链中具有一定主导地位的客户与其上下游间交易提供信息协同、结算对账及经营分析的服务专区。 善付通解决企业传统订单管理、对外协同、收付款等环节分离所造成的对账工作量大、出错...

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

    1,系统接口设计 2,接口设计原则 3,接口定义与分类 4,接口设计模式 5,接口实现方式 6,接口详细设计

    android 建行支付demo

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

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

    (1) 每个操作员在发送交易之前,须先调用 RequestProcess 类的 (2) 调用参数说明: (1) RequestProcess 类的 sendRe

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

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

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

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

    防踩坑指南:对接支付渠道二三事

    今天要分享的内容,会以商家的视角去分析对接渠道过程中需要关注的问题。 (此图片来源于网络,如...银行:招行、建行、农行等 支付机构:微信、支付宝、京东等 每个渠道有自己的收款产品,对应在不同的支付终端上使用。

    银行互联网银行事业部暑期调研报告.pdf

    华兴银行总行互联网银行事业部暑期调研报告 贺佳贝 一、 华兴银行简介 二、 互联网银行事业部简介 三、 P2P 网贷的银行存管模式调研报告 四、 会议纪要调研报告 五、 零售信贷业务调查报告 六、 金融同业机构(银行...

    java 易宝支付源码 (已测试成功,有测试步骤图片)

    1、 登陆页面填入信息 选择银行。 2、 网上找的新的ID,和密码加入到配置文件中使用 3、 点击提交后连接到易宝的支付... 4、 通过建行支付的连接(显示建行已经扣了0.01元) ...5通过上面网址信息发现支付成功。... 、

    智慧养老综合服务平台建设方案.pdf

    门户网站建设及运营、养老政务管理系统(服务监管&线上业务办理)、居家&社区养老管理系统、养老机构管理系统、呼叫管理系统、家庭养老...建设及运营、尊老金管理系统、适老化改造系统、时间银行系统、数据接口对接管理...

    国密2、3秘钥生成及加解密

    SM2Utils.java中main进行国密SM2私钥公钥生成、加解密。SM3Digest.java中main方法里进行sm3摘要生成。

    银行卡清算机构商业模式及开放影响分析报告

    卡组织负责制定和推行银行卡跨行交易的业务规范和技术标 准,建设及运营银行卡支付网络,完成信息交换和资金清算。卡组织类 似于互联网时代的平台型公司,上游对接银行,扩大发卡规模;下游对 接商户,增加受理范围...

    邮政联通数字电信手拉手手机支付第三方

    邮政联通数字电信手拉手手机支付第三方BOSS光大建行中行19E殴飞对接,此款软件和服务器支撑系统。缴费客户端配合使用。全套软件包括【服务器】、【管理器】、【对接程序】、【客户端】组成,缺一不可。服务器包括未...

    银行转账系统

    通过本系统的建设,全校36栋学生公寓已全部接入一卡通专网,其中渭水校区15栋学生公寓的新中新控电系统已与学生用电自助购电系统对接,校本部

    新开普智慧校园建设规划方案.docx

    家校通平台部署在教育局,在各个...和银行系统对接:学生卡中余额不足,短信告知家长,家长以短信形式同意转账向校园卡钱包转账;家长通过网银系统对学生校园卡充值转账;和家长银行卡绑定,进行批量或者自助圈存转账。

    JavaScript escape/unescape 编码的 Java 实现

    本工具类用java实现了JavaScript escape/unescape 编码。对接建行支付以及需要向后端传输中文数据时可以使用得到

    银行现金重空管理系统技术评估报告(系统建设方案).doc

    2.2.1.10 与门禁系统的对接 12 2.2.1.11 安全认证 12 2.2.2 现金、假币、凭证业务模块 12 2.2.2.1 基础数据维护 13 2.2.2.2 库房管理 14 2.2.2.3 网点与支行、支行与总行、网点向总行之间物资调拨管理 16 2.2.2.4 ...

    毕业设计基于-RFID-的校园一卡通系统设计总结与展望.doc

    毕业设计总结与展望致谢 6.1...比如,电子寄存柜系统,银行自动转账业务系统等等。目前的问题 是成本因素制约 RFID 发展。编制高校信息标准体系,建立多种校园一卡通的投资运营模式是解决问题的关键 。我们相信,在信

    大数据医疗现状及趋势.pptx

    建设由城市延伸到农村的统一社会救助、社会福利、社会保障大数据平台,加强与相关部门的数据对接和信息共享,支撑大数据在劳动用工和社保基金监管、医疗保险对医疗服务行为监控、劳动保障监察、内控稽核以及人力资源...

    支撑主系统安装程序

    9、银行短信全自动加款,代理商在银行存款后系统自动给代理商加款。 数据安全 1、客户端与服务器的数据传输使用电脑硬件加密传输,有效防止网络修改数据。 2、系统登录由代理商帐号、密码、短信认证、电脑硬件码...

Global site tag (gtag.js) - Google Analytics