我需要解密使用 RSA 加密的消息,但我只有模数和私有指数作为 Base64 字符串。
我的方法是创建一个 RSAParameter 对象并使用 RSACryptoProvider.ImportParameters 方法导入它:
RSAParameters decryptParameters = new RSAParameters();
// D is the private exponent parameter
decryptParameters.D = Convert.FromBase64String(d);
// n is the Modulus
decryptParameters.Modulus = Convert.FromBase64String(n);
RSACryptoServiceProvider decrypter = new RSACryptoServiceProvider();
try
{
decrypter.ImportParameters(decryptParameters);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
问题是我总是得到一个“坏数据”CryptographycException。
我究竟做错了什么?
我是否需要初始化 RSAParameters 结构中的其他值?哪个?从理论上讲,用于解密消息的私钥应该是 (n, d),即 Modulus 参数,但实现似乎需要更多信息。