我遇到了以下问题。
我创建了一个使用AesCryptoServiceProvider来加密和解密某些数据的类。我在SharePoint WebPart中使用该类,一切正常。我也在自定义SharePoint Web服务中的同一个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和库。
我的开发环境运行的系统是带有Microsoft Office SharePoint Server 2007 SP2 x64和Visual Studio 2008 SP1的Windows Server 2008 Standard SP1 x64。 .Net Framework 3.5 SP1安装在服务器上。
如果有人能指出我正确的方向,我会很高兴。
亲切的问候 Rene Windegger
答案 0 :(得分:0)
来自MSDN:
PlatformNotSupportedException - 当前平台没有支持的密钥大小。 [Link]
您使用的是什么密钥尺寸?
密钥的最小大小为128位,最大大小为256位。 [Link]
答案 1 :(得分:0)
您的例外说明:
此平台不支持指定的加密算法
你需要尝试另一种cryptoprovider。并非所有系统都提供所有的cryptoproviders。 MSDN有完整的列表。
答案 2 :(得分:0)
您的服务器在哪里?微软不允许在世界某些地区(中国,朝鲜等地)使用高密度加密技术。
此外,还有一些组策略设置可以强制执行,以防止使用某些加密(例如,政府机构要求只允许通过组策略使用FIPS算法)。
答案 3 :(得分:0)
我踢了ASP.Net Web服务并引入了WCF服务,现在一切正常。