RSACryptoServiceProvider的问题

时间:2011-02-13 10:47:42

标签: c# cryptography rsa

我的机器上有RSACryptoServiceProvider的问题。如果创建一个新实例:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();

我已经在CspKeyContainerInfo属性下得到了一个异常:

  • Exportable'rsa.CspKeyContainerInfo.Exportable'引发了类型'System.Security.Cryptography.CryptographicException'的异常bool {System.Security.Cryptography.CryptographicException}

  • base {“Key不存在。\ r \ n”} System.SystemException {System.Security.Cryptography.CryptographicException}

如果我在另一台PC上尝试相同的代码,一切正常。我的电脑上是否有一些设置我可以查看它们是否配置正确以及配置是什么?关于可能出现什么问题的任何线索?

由于

编辑: 它似乎只发生在框架4.0上。任何线索?

2 个答案:

答案 0 :(得分:2)

我设法让它发挥作用。

            CspParameters parms = new CspParameters();
            parms.Flags = CspProviderFlags.NoFlags;
            parms.KeyContainerName = Guid.NewGuid().ToString().ToUpperInvariant();
            parms.ProviderType = ((Environment.OSVersion.Version.Major > 5) || ((Environment.OSVersion.Version.Major == 5) && (Environment.OSVersion.Version.Minor >= 1))) ? 0x18 : 1;

            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(parms);

我不知道为什么,但就是这样。 如果有人知道这种行为的原因,那么评论就更受欢迎了。

谢谢

答案 1 :(得分:0)

您可以在Windows注册表中获取提供程序类型: \ LOCAL_MACHINE \ SOFTWARE \微软\加密\默认\提供商\

查找所需的提供程序并检查“类型”值...