2009-08-24 65 views
3

我有以下問題。System.PlatformNotSupportedException AesCryptoServiceProvider

我創建了一個使用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安裝在服務器上。

如果有人能指出我正確的方向,我會很感激。

親切的問候 劉若英Windegger

+1

我正在使用256位的密鑰大小。 由於問題在構造函數被調用時發生,而構造函數在從WebPart調用時工作,所以我不知道平臺差異應該放在哪裏。 – superreeen 2009-08-24 15:49:53

回答

0

從MSDN:

PlatformNotSupportedException - 沒有爲當前平臺沒有支持的密鑰大小。 [Link]

你使用什麼密鑰大小?

密鑰的最小尺寸是128位,最大尺寸是256位。 [Link]

+0

我正在使用256位的密鑰大小。由於當構造函數被調用時,問題會出現,並且構造函數在從WebPart調用時工作,所以我不知道平臺的差異應該放在哪裏。 – superreeen 2009-08-24 17:20:38

0

您的異常狀態:

指定的加密算法是不支持這個平臺

你需要嘗試另一種cryptoprovider。並非所有的加速器都可用於所有系統。 MSDN有完整的列表。

+1

是的豁免表明該算法不支持該平臺。 它在與web服務相同的應用程序池中的web部件中調用時起作用。 只有在從webservice調用它時纔會發生異常。 由於webservice和webpart在同一個平臺上運行,因此這不成問題。 – superreeen 2009-08-26 09:52:00

+0

你仍然應該嘗試給另一個提供者。 AFAIK這個例外非常簡單。從來沒有聽說過它被拋棄了錯誤的條件。 – 2009-08-26 12:01:03

0

您的服務器位於何處? Microsoft不允許在世界某些地區(中國,韓國等)使用高密度密碼加密

此外,還有一些組策略設置可以強制執行以防止使用某些加密(例如政府機構授權通過組策略只允許FIPS算法)。

+0

服務器位於奧地利,我還沒有發現任何說明奧地利不支持高密度強度的加密。 – superreeen 2009-08-26 09:54:29

+0

AES上的machine.config是否存在限制? – Spence 2009-08-26 23:26:05

0

我踢了ASP.Net Web服務,並引入了WCF服務,現在一切正常。

相關問題