RSACryptoServiceProvider无法仅在服务器2012上解密

时间:2016-07-18 08:18:41

标签: c# encryption server windows-server-2012

我有一个使用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); 
        }
    }
}

非常感谢

0 个答案:

没有答案