【问题标题】:DSACryptoServiceProvider constructor throws CryptographicExceptionDSACryptoServiceProvider 构造函数抛出 CryptographicException
【发布时间】:2010-06-16 21:54:36
【问题描述】:

下面的代码出现以下错误: System.Security.Cryptography.CryptographicException "句柄无效"

CspParameters CSPParam = new System.Security.Cryptography.CspParameters(13, null, null);
CSPParam.Flags = CspProviderFlags.UseMachineKeyStore;
CSPParam.KeyContainerName = "MyKeys";

System.Security.Cryptography.DSACryptoServiceProvider r = new System.Security.Cryptography.DSACryptoServiceProvider(CSPParam);  //Error occurs here

这段代码一直运行没有问题,然后它开始抛出这个错误。我想不出任何与此相关的更改。有没有人看到这个错误?有什么想法可以尝试吗?

【问题讨论】:

    标签: c# cryptography


    【解决方案1】:

    我不记得 CAPI 幕后发生的所有事情,但如果我回忆起来可能会相当痛苦。通过使用空参数,您可能会得到一些称为(我认为)默认密钥容器的东西。在运行代码之前,我认为您不能指望不存在的默认密钥容器,如果它存在,那么您可能会收到错误消息。您可以阅读有关 CryptAcquireContext 函数和各种 _KEYSET_THIS_THAT 标志的所有信息,以了解如何在非托管代码中执行此操作。我不知道是否有围绕这种恐怖的 .NET 包装器。

    【讨论】:

      【解决方案2】:

      确保您具有执行此操作的适当权限。

      information

      【讨论】:

      • 我看了那篇文章,按照上面说的做了,但没有帮助。
      猜你喜欢
      • 2011-06-02
      • 1970-01-01
      • 2011-04-07
      • 2014-08-10
      • 2011-11-04
      • 1970-01-01
      • 2013-01-01
      • 2015-09-10
      • 2014-11-03
      相关资源
      最近更新 更多