Java:使用RSA私钥(Xml签名)解密字符串

Java:使用RSA私钥(Xml签名)解密字符串,java,encryption,rsa,Java,Encryption,Rsa,我必须解密在.NET中使用RSA xml签名公钥加密的字符串 我尝试使用php RSA Crypt模块,它会抛出错误。所以,我想使用Java。我是个新手。示例代码将非常有用 实际上,我需要将下面的.Net代码移植到Java RSACryptoServiceProvider rsaCryptoServiceProvider = new RSACryptoServiceProvider(keySize); rsaCryptoServiceProvider.FromXmlString(privateK

我必须解密在.NET中使用RSA xml签名公钥加密的字符串 我尝试使用php RSA Crypt模块,它会抛出错误。所以,我想使用Java。我是个新手。示例代码将非常有用

实际上,我需要将下面的.Net代码移植到Java

RSACryptoServiceProvider rsaCryptoServiceProvider = new RSACryptoServiceProvider(keySize);
rsaCryptoServiceProvider.FromXmlString(privateKey);
int base64BlockSize = ((keySize / 8) % 3 != 0) ? (((keySize / 8) / 3) * 4) + 4 : ((keySize / 8) / 3) * 4;
int iterations = inputString.Length / base64BlockSize;
ArrayList arrayList = new ArrayList();
for (int i = 0; i < iterations; i++)
{                                                                               
   byte[] encryptedBytes = Convert.FromBase64String(inputString.Substring(base64BlockSize * i, base64BlockSize));
   Array.Reverse(encryptedBytes);
   arrayList.AddRange(rsaCryptoServiceProvider.Decrypt(encryptedBytes, false));
}                                                                                                   lstrResponse = Encoding.UTF8.GetString(arrayList.ToArray(Type.GetType("System.Byte")) as byte[]);
rsacryptserviceprovider rsacryptserviceprovider=新的rsacryptserviceprovider(keySize);
rsacyptoserviceprovider.FromXmlString(privateKey);
int base64BlockSize=((键大小/8)%3!=0)?((键值/8)/3)*4)+4:((键值/8)/3)*4;
int迭代次数=inputString.Length/base64BlockSize;
ArrayList ArrayList=新的ArrayList();
对于(int i=0;i
您必须读取.Net XML密钥表示,并将指数和模数存储在Java中。将此实例传递给a的
generatePrivate
方法以生成密钥

然后,您需要通过
Cipher.getInstance
方法获得一个实例,该方法具有适合.Net实现的算法。密码也需要正确初始化。使用获得的
RSAPrivateKey
实例(见上文),您可以调用其中一个密码方法来解密数据


当然,关键在于细节:关键材料的解码和格式化,找到正确的算法,初始化…

你是说
Cipher.getInstance()