如何在java/Android中使用C#生成的私钥?

如何在java/Android中使用C#生成的私钥?,java,c#,android,rsa,Java,C#,Android,Rsa,我的服务器端(C#或.Net)的人给了我一个xml格式的RSA密钥对,但问题是我不能在我的Java/Android代码中使用给定的密钥,它总是抛出InValidKeySpec异常 不知何故,我以这种方式将RSA公钥转换为Java公钥格式- String Modoutput = "pgFkNu7tN3K8VCxxvKMFwqaRJ6I158/aihg1J1p13P5HvVz8Pn2oC7hfdhujlQxHPsV/b8Rc3Snq5KGmC4VBnw=="; String

我的服务器端(C#或.Net)的人给了我一个xml格式的RSA密钥对,但问题是我不能在我的Java/Android代码中使用给定的密钥,它总是抛出InValidKeySpec异常

不知何故,我以这种方式将RSA公钥转换为Java公钥格式-

String Modoutput = "pgFkNu7tN3K8VCxxvKMFwqaRJ6I158/aihg1J1p13P5HvVz8Pn2oC7hfdhujlQxHPsV/b8Rc3Snq5KGmC4VBnw==";
            String Expoutput = "AQAB";

            byte[] exponentBytes = Base64.decode(Expoutput);
            byte[] modulusBytes =  Base64.decode(Modoutput);

            BigInteger e = new BigInteger(1, exponentBytes);
            BigInteger m = new BigInteger(1, modulusBytes);
            RSAPublicKeySpec keySpec = new RSAPublicKeySpec(m, e);
            PublicKey mServerPublicKey = rsaKeyFactory.generatePublic(keySpec);
但无法将给定的RSAPrivate(C#)密钥转换为Java/Android可理解。 我试过这个,然后

我正在研究这个问题,但没有取得任何成功,需要专家的帮助


快乐编码:-)

您可以从该链接获取参考资料


假设XML中有私钥指数,这似乎会对您有所帮助,这是在Java中生成私钥的等效代码。对于Android,请更换base64编码部分

String privateExponentB64 = "...";
String modulusB64 = "...";

byte[] privateExponentBytes = Base64.getDecoder().decode(privateExponentB64);
byte[] modulusBytes = Base64.getDecoder().decode(modulusB64);

BigInteger privateExponent = new BigInteger(1, privateExponentBytes);
BigInteger modulus = new BigInteger(1, modulusBytes);
RSAPrivateKeySpec privateKeySpec = new RSAPrivateKeySpec(modulus, privateExponen);
KeyFactory factory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = factory.generatePrivate(privateKeySpec);

公钥是可以的,但问题是我也需要私钥。如果您想将给定的密钥转换为可理解的形式。。。。。。希望这将帮助你…请不要张贴一个链接作为答案。这里包括相关部分。看到了,没问题,但是像

,,,这样的其他部分呢??生成Java可理解私钥是否不需要这些参数??privateExponent(不是公共)和模数足以创建密钥。为PrivateExponent使用值当我尝试使用此私钥时,获取BadPaddingException此错误可能是由于多种原因造成的,这可能与我提供的代码无关。请更新您的问题或使用您使用的私钥代码创建一个新问题,以及错误的完整跟踪