Android和JAVA后端 RSA分段加密、解密 javax.crypto.BadPaddingException : Decryption error

结论

1、JAVA后端JDK加密默认标准和安卓默认加密标准不一致
2、数据填充方式不一致,导致数据解析失败

解决办法

1、安卓端加密标准设置为:RSA/ECB/PKCS1Padding
2、服务端加密标准设置为:RSA

说明

android 端使用的默认填充方式是“RSA/None/NoPadding”**
JAVA默认填充方式是“RSA/None/PKCS1Padding”**

客户端用 Cipher.getInstance(“RSA”) 方法进行加密时,使用的 provider 是Bouncycastle Security provider,Bouncycastle Security provider 默认实现的是 “RSA/None/NoPadding” 算法,而服务端端用 Cipher.getInstance(“RSA”) 进行解密时,使用的是 Sun 的 security provider,实现的是 “RSA/None/PKCS1Padding” 算法,所以,解密时会失败。

服务端改为“RSA/None/NoPadding”,测试报错并不支持该算法。
调整安卓端加密方式即可。

你可能感兴趣的:(java,安卓,rsa)