网上搜索了很多例子,其实都模模糊糊讲的 。最终解决方法很简单。
情况是:在C#的后台 生成的C#的 私钥公钥。<RSAKeyValue><Modulus> 类似带这种标记的文本。(生成方法网上一大堆)
java 和 C#互通 十分简单,网上也有很多例子。
但是将java的代码丢到android里面就会出现C#无法解析代码。
网上说下载什么bouncycastle.jar.zip其实也不是解决这种问题。
实际上问题接地气的解释就是 android 默认不支持 带混淆 的私钥公钥,而c#生成的是带有的。<Exponent>AQAB</Exponent>就是这个部分。(算法有很多,简单用这个),
而java 默认是c#这种解析方式所以java可以和c#畅通无阻。(就网上代码很多)
android需要指明 私钥公钥生成方式。
KeyFactory fact = KeyFactory.getInstance("RSA");
PublicKey pubKey = fact.generatePublic(rsaPubKey);
Cipher cipher1 = Cipher.getInstance("RSA/ECB/PKCS1Padding"); //这个是android 使用的。