DSACryptoServiceProvider构造函数抛出CryptographicException

时间:2010-06-16 21:54:36

标签: c# cryptography

以下代码显示以下错误: 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

此代码一直没有问题,然后开始抛出此错误。我想不出任何与此有关的改变。有没有人见过这个错误?什么尝试的想法?

2 个答案:

答案 0 :(得分:0)

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

information

答案 1 :(得分:0)

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