结论
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”,测试报错并不支持该算法。
调整安卓端加密方式即可。