2009-09-23 69 views
0

http://www.mentalis.org/forum/thread.qpx/971重新发布,因为我需要一个答案。我希望你们能帮助我。CryptographicException:无法获取加密服务提供商方面

有问题的组件是Org.Mentalis.SecurityServices.dll。


嘿所有。我有麻烦。

CryptographicException:无法获取加密服务提供程序上下文。

堆栈跟踪:

at Org.Mentalis.SecurityServices.Cryptography.CryptoHandle.CreateInternalHandle(IntPtr handle, String container) 
at ORG.Mentalis.SecurityServices.Cryptography.CryptoHandle.get_Handle() 
at Org.Mentalis.SecurityServices.Cryptography.RC4CryptoServiceProvider.ctor() 
at <place in my app where I try to create the RC4 CryptoServiceProvider> 

我不得不用手该异常跟踪复制,从客户端发送给我的截图。

从本质上讲,我已经创建了一个XP使用的RC4CryptoServiceProvider从启动时的.ini文件加载加密的用户详细信息的.NET 3.5 WinForms应用程序。它几个月来工作得很好。

大约一个星期前,我在我的电脑上得到了这个确切的异常消息。我在网上做了一些狩猎,但找不到太多 - 我发现的一切都与网站有关。

我最终偶然发现了一种解决方法,它可以让我的电脑正常工作。

C:当我从以下三个文件夹删除的文件\的Documents and Settings \所有用户\应用数据\微软\加密\ RSA \ MachineKeys的\

C:\ Documents和Settings \所有用户\应用数据\微软\加密\ RSA \记号\

C:\ Documents和Settings \ my_username \应用数据\微软\加密\ RSA \记号\

的问题就走了。下次运行应用程序时,这些文件夹会重新填充新信息。

我原以为这只是唯一以我自己的开发环境的东西 - 我已经下载了一些奇怪的是损害我的加密文件和文件夹。这不是一个我是专家的领域 - 我只是使用这个组件,它只是工作。那么......直到现在。

的问题是,我公司的客户之一,最近刚开始遇到了同样的错误,我不舒服,要求他们只是清除出自己的加密文件,而不能解释为何。另外,这似乎并不是由于我下载的东西有些奇怪,因为这个例外是由一系列商业终端服务器引起的。

我一直在四处寻找在这个问题上的支持,但我没有多少运气。我会继续环顾四周。外面的任何人都可以看到这种情况吗?

谢谢你的时间。

+1

明显的起点是您找到解决方法的地方。有没有解释? – 2009-09-23 21:05:23

+0

我没有在任何地方找到解决方法。首先,我使用procmon和DLLTool来查找应用程序在做什么。我注意到有一个参考出来C:\ Documents and Settings \ my_username \ Application Data \ Microsoft \ Crypto \ RSA \ token \ filename - 在这一点上,我只是去删除该文件和等效文件All Users文件夹。之后,问题就消失了。从来没有发现任何网上推荐这个 - 我只是试过,它的工作。感谢编辑,顺便说一句。 – 2009-09-23 21:12:11

回答

0

您是否知道您的客户是否在他们的计算机上安装了CSP?较旧版本的Windows不会安装某些CSP。这也有可能是他们正在运行的Windows版本对外不支持强大的加密(我想法语版本可能不会被允许有他们。)

另一种可能性是权限。运行代码的进程可能不再使用管理权限运行,或者与您的帐户相关的权限发生更改。

0

Mentalis库在调用CryptAcquireContext时应该真的设置CRYPT_VERIFYCONTEXT标志。由于它们不是,RC4CryptoServiceProvider的每个实例都会创建一个默认持久性密钥容器(它存储在您使用procmon定位的文件中)的句柄。

您是在多个线程(或来自多个进程)创建密钥吗?疯狂的猜测是你在锁定文件时遇到了一些问题。

相关问题