工行支付通知验签失败
西魏陶渊明
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)