-2

我必须解密使用 .NET 中的 RSA xml 签名公钥加密的字符串我尝试使用 php RSA Crypt Module 抛出错误。所以,我想使用 Java 。我是小新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[]);
4

1 回答 1

1

您必须阅读 .Net XML 密钥表示并将指数和模数存储在 Java RSAPrivateKeySpec中。将此实例传递给KeyFactorygeneratePrivate的方法以生成密钥。

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

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

于 2012-07-26T16:54:18.990 回答