问题描述
使用C++签名方式。一,控件的注册使用:1.将"加密控件"文件夹中的libpem12.dll,RSA.dll放到系统目录下。不同系统目录不同,windows95/98系统目录为system,winnt/2000/xp/win7为system32,64位系统为SysWOW64。2.将"加密控件"文件夹中MerchCryptCom.dll复制到指定路径中,注册MerchCryptCom.dll。运行系统命令:regsvr32路径MerchCryptCom.dll,若弹出成功字样,表明该COM注册成功,可以使用。MerchCryptCom.dll控件注册时可能会失败,需要依赖库,如果失败请安装文件“2010运行时库文件.rar”中的程序。3.安放商户端订单加密证书(商户私钥和银行公钥)。注意:在win2003或win2008服务器上注册控件时可能会报错,是因为该机器上缺少运行时库造成的。请安装2010版的运行时库后,再尝试注册控件。二,数据加密:MerchCryptComLib.IMerchCryptCtrlc=newMerchCryptComLib.MerchCryptCtrl();1、读取银行公钥证书c.readcert("D:/ZOCAI/cert/bank2048二进制.cer");2、判断返回码intretVal=c.retCode();3、读取证书信息if(retVal==0){stringbankData=c.cert;}else{/*”错误处理”*/};4、读取商户私钥证书c.readcert("D:/ZOCAI/cert/99004.pfx");5、判断返回码intretVal=c.retCode();6、读取证书信息if(retVal==0){stringmerchData=c.cert;}else{/*”错误处理”*/};7、数据加密stringprestr="1404231613276912|佐卡伊订单[14042316132769]|佐卡伊订单[14042316132769]|66002|测试商户|0|0|http://120.236.36.218/ebanknotify/cmbcreturn|4999.00|20140807|150503";c.EnvelopData(prestr,bankData,merchData,"1111");8、判断返回码intretVal=c.retCode();9、获取加密后数据if(retVal==0){stringsign=c.EnveData;}else{/*”错误处理”*/};问题:1,公钥私钥都正确,加密过程也没错误。但就是报出“验签失败”的错误。2,libpem12.dll,RSA.dll两个dll文件,是不是只需放入系统目录就可以,但我发现,无论有没有放入,加密结果都一样。验签失败。3,百度谷歌搜索到的资料,都没有MerchCryptCom.dll加密控件(以前是另一个名称)。有没有哪位开发过民生接口,来分享下经验。万分感谢!
解决方案
解决方案二:
就这安装步骤,感觉民生银行的IT人员技术好差
解决方案三:
这种专业性非常强的东西,当然是要跟那边的技术进行沟通了啊……
解决方案四:
春节回来第一件事。。继续解决这个问题。。。
解决方案五:
如果你是直接粘贴下面的代码那肯这是错了,1、读取银行公钥证书c.readcert("D:/ZOCAI/cert/bank2048二进制.cer");这个要两个/->c.readcert("D://ZOCAI//cert//bank2048二进制.cer")2、判断返回码intretVal=c.retCode();3、读取证书信息if(retVal==0){stringbankData=c.cert;}else{/*”错误处理”*/};4、读取商户私钥证书c.readcert("D:/ZOCAI/cert/99004.pfx");->c.readcert("D://ZOCAI//cert//99004.pfx");
解决方案六:
引用4楼wyd1520的回复:
如果你是直接粘贴下面的代码那肯这是错了,1、读取银行公钥证书c.readcert("D:/ZOCAI/cert/bank2048二进制.cer");这个要两个/->c.readcert("D://ZOCAI//cert//bank2048二进制.cer")2、判断返回码intretVal=c.retCode();3、读取证书信息if(retVal==0){stringbankData=c.cert;}else{/*”错误处理”*/};4、读取商户私钥证书c.readcert("D:/ZOCAI/cert/99004.pfx");->c.readcert("D://ZOCAI//cert//99004.pfx");
是地址错了吗,要将/改成//?但是判断返回码时,都是返回成功啊。