工行支付通知验签失败

西魏陶渊明
Java领域优质创作者
博客专家认证
2017-03-03 11:55:01
public ResquestVo verifySign(String merVAR, String notifyData, String signMsg) {
//明文数组
byte[] xmlobj = null;
String brightTxt = null;
try {
xmlobj = ReturnValue.base64dec(notifyData.getBytes("gbk"));
brightTxt = new String(xmlobj, "gbk");
logger.info("返回报文:{}", brightTxt);
} catch (UnsupportedEncodingException ue) {
logger.error(ue.getMessage());
}
byte[] bCert = ICBCParameterWrapper.getPublicKey();
int flag = 1;
//密文数组
byte[] signMsgs = ReturnValue.base64dec((signMsg.getBytes()));
byte[] bSrc = xmlobj;
try {
flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);
} catch (SignatureException se) {
logger.error("解签异常:" + se.getMessage());
} catch (InvalidKeyException ie) {
logger.error("key:{}无效:" + ie.getMessage(), "merVAR");
} catch (NoSuchAlgorithmException nee) {
logger.error("请检查加密算法:" + nee.getMessage());
}


开发环境:
JDK1.8
错误信息:
javax.crypto.BadPaddingException: unknown block type
at cn.com.infosec.jce.provider.JCERSACipher.engineDoFinal(JCERSACipher.java:225)
at javax.crypto.Cipher.doFinal(Cipher.java:2223)
at cn.com.infosec.icbc.ReturnValue.publicDecrypt(ReturnValue.java:1064)
at cn.com.infosec.icbc.ReturnValue.publicDecryptCert(ReturnValue.java:946)
at cn.com.infosec.icbc.ReturnValue.verifySign(ReturnValue.java:588)
...全文
2354 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
西魏陶渊明 2020-04-01
  • 打赏
  • 举报
回复
各位大佬息怒,我要把这个帖子关了。
云飞扬 2020-01-18
  • 打赏
  • 举报
回复
引用 7 楼 不偷腥的mao 的回复:
[quote=引用 6 楼 云飞扬 的回复:]
[quote=引用 5 楼 不偷腥的mao 的回复:]
[quote=引用 4 楼 云飞扬 的回复:]
虽然过了一年半了,不知道你解决了没有。我最近刚弄工行支付,问题应该是这:
flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);
验签方法参数三是sign,参数四才是证书字节数组。你好像弄反了

虽然过期一年半了,但是我还是想评论下。flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);来跟我翻译一下,cert对应中文是什么?对的,是证书,signMsg是什么呢?对的是签名。
所以人家第三个参数和第四个参数已经很明白的告诉你了,怎么会是反的呢?[/quote]

参数顺序我是记错了,楼主没传错,但是你用传的实参去当形参去硬解释,也够挺能杠的。[/quote]
你从写代码的第一天没有人教你参数命名要和实际释义匹配,还是你写代码name都表示id?别人指出你的问题就叫硬杠?我是不是低声下气的说“您好,您这里的解释可能有点问题。。。”您才认可自己的错误?你可真丢云飞这个名字。[/quote]

你真是把我逗乐了,看来你还是不明白什么叫形参,什么叫实参。
程序里定义的方法执行时传的参数叫实参,形参才是方法需要的参数定义,你拿着实参的名字含义当形参定义去讲,你说你是不是杠?
我给你举个例子:
我如果定义方法verifySign( byte[]src, int length , byte[] message, byte[] cert);
你再用 flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs); 这实参顺序去传,我就问问你,你能得到什么结果?
我当时回复时确实是把形参顺序记错了,你第一次回复了,我特地查了下之前项目去做了下确认。我的错就是我的错,但是我做个数学题1+2=4做错了,您给指出错了,还要强调是因为西游记的作者是吴承恩,您说这搞不搞笑?
请虚心吧,形参实参从没写代码的那天开始就需要弄懂了。
另外,您也不用低三下四的,我受不起,受了还要折寿。
huiyunfei 2019-12-31
  • 打赏
  • 举报
回复
引用 6 楼 云飞扬 的回复:
[quote=引用 5 楼 不偷腥的mao 的回复:] [quote=引用 4 楼 云飞扬 的回复:] 虽然过了一年半了,不知道你解决了没有。我最近刚弄工行支付,问题应该是这: flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs); 验签方法参数三是sign,参数四才是证书字节数组。你好像弄反了
虽然过期一年半了,但是我还是想评论下。flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);来跟我翻译一下,cert对应中文是什么?对的,是证书,signMsg是什么呢?对的是签名。 所以人家第三个参数和第四个参数已经很明白的告诉你了,怎么会是反的呢?[/quote] 参数顺序我是记错了,楼主没传错,但是你用传的实参去当形参去硬解释,也够挺能杠的。[/quote] 你从写代码的第一天没有人教你参数命名要和实际释义匹配,还是你写代码name都表示id?别人指出你的问题就叫硬杠?我是不是低声下气的说“您好,您这里的解释可能有点问题。。。”您才认可自己的错误?你可真丢云飞这个名字。
云飞扬 2019-12-30
  • 打赏
  • 举报
回复
引用 5 楼 不偷腥的mao 的回复:
[quote=引用 4 楼 云飞扬 的回复:]
虽然过了一年半了,不知道你解决了没有。我最近刚弄工行支付,问题应该是这:
flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);
验签方法参数三是sign,参数四才是证书字节数组。你好像弄反了

虽然过期一年半了,但是我还是想评论下。flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);来跟我翻译一下,cert对应中文是什么?对的,是证书,signMsg是什么呢?对的是签名。
所以人家第三个参数和第四个参数已经很明白的告诉你了,怎么会是反的呢?[/quote]

参数顺序我是记错了,楼主没传错,但是你用传的实参去当形参去硬解释,也够挺能杠的。
huiyunfei 2019-12-26
  • 打赏
  • 举报
回复
引用 4 楼 云飞扬 的回复:
虽然过了一年半了,不知道你解决了没有。我最近刚弄工行支付,问题应该是这: flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs); 验签方法参数三是sign,参数四才是证书字节数组。你好像弄反了
虽然过期一年半了,但是我还是想评论下。flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);来跟我翻译一下,cert对应中文是什么?对的,是证书,signMsg是什么呢?对的是签名。 所以人家第三个参数和第四个参数已经很明白的告诉你了,怎么会是反的呢?
云飞扬 2018-08-20
  • 打赏
  • 举报
回复
虽然过了一年半了,不知道你解决了没有。我最近刚弄工行支付,问题应该是这:
flag = ReturnValue.verifySign(bSrc, bSrc.length, bCert, signMsgs);
验签方法参数三是sign,参数四才是证书字节数组。你好像弄反了

5,657

社区成员

发帖
与我相关
我的任务
社区描述
Web开发应用服务器相关讨论专区
社区管理员
  • 应用服务器社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧