不支持的操作系统平台:AesCryptoServiceProvider

3
我遇到了以下问题。
我创建了一个使用AesCryptoServiceProvider加密和解密一些数据的类。我在SharePoint WebPart中使用这个类,一切都很顺利。我还在同一个Web应用程序中的自定义SharePoint Web服务中使用相同的类,但每次调用System.Security.Cryptography.AesCryptoServiceProvider的构造函数时,它都会抛出System.PlatformNotSupportedException并显示以下堆栈跟踪。
System.PlatformNotSupportedException: The specified cryptographic algorithm is not supported on this platform.
   at System.Security.Cryptography.CapiNative.AcquireCsp(String keyContainer, String providerName, ProviderType providerType, CryptAcquireContextFlags flags, Boolean throwPlatformException)
   at System.Security.Cryptography.AesCryptoServiceProvider..ctor()
   at m2009_wu.ProvisioningLibrary.ConfigManager..ctor()

我已经尝试在不同平台上编译包含类的webservice和库,但没有任何变化。

我的开发环境运行在Windows Server 2008 Standard SP1 x64上,安装了Microsoft Office SharePoint Server 2007 SP2 x64和Visual Studio 2008 SP1。服务器上安装了.Net Framework 3.5 SP1。

如果有人能指点我正确的方向,我将不胜感激。

谢谢 Rene Windegger


1
我正在使用256位的密钥大小。 由于问题发生在构造函数被调用时,而且当从WebPart调用构造函数时它是正常工作的,所以我不知道平台之间的差异应该在哪里。 - superreeen
4个回答

0

来自MSDN:

PlatformNotSupportedException - 当前平台不支持该密钥大小。[链接]

您使用的密钥大小是多少?

密钥的最小大小为128位,最大大小为256位。[链接]


我正在使用256位的密钥大小。由于问题发生在构造函数被调用时,而且当从WebPart调用构造函数时它是正常工作的,所以我不知道平台之间的差异应该在哪里。 - superreeen

0

您的异常信息如下:

此平台不支持指定的加密算法

您需要尝试其他的加密提供程序。并非所有的加密提供程序都适用于所有系统。MSDN 上有完整的列表。


1
是的,异常说明该算法在该平台上不受支持。 当从与 Web 服务相同的应用程序池中的 Web 部件中调用时,它可以正常工作。 只有在从 Web 服务中调用时才会出现异常。 由于 Web 服务和 Web 部件在同一平台上运行,因此这不可能是问题的原因。 - superreeen
你仍然应该尝试另一个提供者。据我所知,这个异常非常直接明了。从未听说过它在错误的条件下被抛出。 - Nikolay R

0

你们的服务器放在哪里?微软不得在某些地区(如中国、朝鲜等)使用高密钥强度的加密技术。

此外,还有一些组策略设置可以强制执行,以防止使用某些加密技术(例如,政府机构通过组策略规定只允许使用FIPS算法)。


服务器位于奥地利,我没有找到任何说明奥地利不支持高密钥强度加密的内容。 - superreeen
机器配置文件(machine.config)上是否有对AES的限制? - Spence

0

我已经放弃了ASP.Net Web服务并引入了WCF服务,现在一切都正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接