【银企平台】招行云直连查余额报错"No such algorithm: SM4/CBC/PKCS7Padding"原创
金蝶云社区-汪伟康
汪伟康
7人赞赏了该文章 143次浏览 未经作者许可,禁止转载编辑于2023年09月18日 18:20:46

问题背景:银企平台招行云直连SM加密算法版本,之前查余额正常,后来突然报错(No such algorithm: SM4/CBC/PKCS7Padding), 该报错报错是指jvm运行环境依赖库中缺少这个加密算法,可能由于银企的jvm环境中存在相关jar包冲突(存在不同版本的bcprov-jdk15on包)导致,不好排查。

Caused by: java.security.NoSuchAlgorithmException: No such algorithm: SM4/CBC/PKCS7Padding
at javax.crypto.Cipher.getInstance(DashoA13*..)
at javax.crypto.Cipher.getInstance(DashoA13*..)
at com.kingdee.ebservice.cmb.cmp.service.util.DCCryptor.CMBSM4Crypt(DCCryptor.java:74)
at com.kingdee.ebservice.cmb.cmp.service.util.DCCryptor.CMBSM4EncryptWithCBC(DCCryptor.java:33)
at com.kingdee.ebservice.cmb.cmp.service.util.SMUtil.encrypt(SMUtil.java:89)



解决方案:

1.在银企平台安装的jdk路径下的jre\lib\security修改java.security文件,替换security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider。

并将原有的#security.provider.7=XXXXXXXXXXXX 注释掉

2.在银企平台安装路径下/jdk/jre/lib/ext下添加jar包(见附件bc包解压)

3.重启银企服务


上面这个方法是相当于指定jvm环境中的Bouncy Castle库的加密算法类为我们添加的那个jar包中的org.bouncycastle.jce.provider.BouncyCastleProvider,这个里面提供了该算法的支持。

bc包.zip(3.70MB)

赞 7