最近做一个基于android的客户端,客户端与Java服务器(MyEclipse自带的Tomcat服务器)的通信需要实施安全方案。而本人是使用非对称密钥来对数据进行加密的,客户端用公钥加密,服务器用私钥解密。因此本人就用非对称密钥RSA算法来实施。而本人在最开始的时候,在android平台上与服务端初始化Cipher的时候都是使用一下这种方式:
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, key);
int blockSize = cipher.getBlockSize();
在这种情况下,android平台的客户端可以加密成功。而到了服务器这一端却无法解密,却抛出了以下异常:
“java.lang.Exception: Blocktype mismatch: 0”
在网上搜索了很多资料,有很多解决AndroidRSA与Java加密标准不同产生问题的方法。但是大部分解决方法都是说把android客户端和tomcat服务器上方法getInstance的参数写成统一形式,如:“RSA/ECB/PKCS1Padding”或者“RSA/None/PKCS1Padding”。但是当本人改成相同形式的时候,还是出现上面的相同的异常:
“java.lang.E