问题排查记录
程序员文章站
2022-06-09 15:03:31
...
- saas系统,商户回调我们时对数据加密(用我们提供的公钥加密),我们回调接口用私钥解密解不开,报
javax.crypto.BadPaddingException: Decryption error
异常,确保**对没问题的情况下解不开?
原因:双方RSA使用的provider不一致。我们这边使用默认的provider,jdk自带的com.sun.crypto.provider.SunJCE,而商户那边使用了org.bouncycastle.jce.provider.BouncyCastleProvider(BC)。加密解密必须使用相同的provider才能保证在秘钥对没问题的时候,加密解密成功。
Cipher cipher = Cipher.getInstance("RSA"); //jdk默认provider
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(),new BouncyCastleProvider());//BC provider