我有一个使用c#RSACryptoServiceProvider使用私钥解密数据的应用程序。 这在Windows 7,Server 2008上每次都有效,但是一旦它在服务器2012上运行,它就会因为Bad Data而失败? 我创建了一个带有值的控制台应用程序,并且密钥是硬编码的,所以我可以100%相同并在所有操作系统版本上运行它,并且仍然相同,适用于Windows 7和服务器2008,但不适用于服务器2012。 它让我疯狂,有没有人有任何想法?
代码如下所示:
public class Decryptor
{
private readonly RSACryptoServiceProvider provider;
public Decryptor(int keySize)
{
provider = new RSACryptoServiceProvider(keySize);
}
public string Decrypt(string value)
{
try
{
Console.WriteLine("Decoding from base64");
var fromBase64 = Convert.FromBase64String(value);
Console.WriteLine("Decoded ok from base64");
Console.WriteLine("Decrypting....");
var decrypted = provider.Decrypt(fromBase64, false);
Console.WriteLine("Decrypted ok");
Console.WriteLine("Encoding to UTF8....");
var utf8Encoded = Encoding.UTF8.GetString(decrypted);
Console.WriteLine("Encoded to UTF8 ok");
return utf8Encoded;
}
catch (Exception ex)
{
Console.WriteLine("Error in Decrypt:" + ex.Message);
Console.WriteLine("Inner Exception:" + ex.InnerException);
Console.WriteLine("Stack Trace:" + ex.StackTrace);
}
return "Error";
}
public void LoadPrivateKey(string privateKey)
{
try
{
provider.FromXmlString(privateKey);
}
catch (Exception ex)
{
Console.WriteLine("Error in LoadPrivateKey:" + ex.Message);
}
}
}
非常感谢