最近项目中遇到了RSA数据加密的问题。客户端为Android App,服务端使用Java开发。
开始在网上找到一份很普通的Java RSA加密算法,直接引入到项目中发现在客户端(Android)加密后,在服务器端(Java)解不开;但是在客户端单独加解密并没有问题,在服务端单独加解密也是没有问题的。
最后在网上查找才发现,是由于Android RSA与Java RSA标准并不完全一样,主要问题在与以下代码段:
Cipher.getInstance(param);
1.在Java 中使用时,param:“RSA”;
2.在Android中使用时,param:”RSA/ECB/PKCS1Padding”;
另外,需要注意的是:经过RSA加密后的字符串中会有一些特殊字符,在网络传输时,会发生变化,导致解密失败。因此,在传输之前需要双方约定,对特殊字符进行处理。