2013-09-27 55 views
5

我在iPad版我的應用程序的工作,我有什麼,我用AesCryptoServiceProvider例如如下的功能AesCryptoServiceProvider在MonoTouch的

using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()) 
{ 
    setAesProviderSettings(aesProvider); 
    result = aesProvider.CreateEncryptor().TransformFinalBlock(plainBytes, 0, plainBytes.Length); 
} 

它工作在我的Android應用程序(MonDroid)和一個.NET(WPF)應用程序,但在iOS中我得到了這個錯誤;

Error 5  The type or namespace name 'AesCryptoServiceProvider' could not be found (are you missing a using directive or an assembly reference?)  

功能是在我的核心項目,我使用項目鏈接引用它在iPad項目,也是我在這三個平臺上使用的Android版本項目鏈接,當然是相同的所有文件它需要的引用。我在Visual Studio 12中使用了Xamarin。

回答

6

使用工廠方法Aes.Create(),您的代碼將在不同的.NET版本/平臺上更具可移植性。例如。

using (var aesProvider = Aes.Create()) { 
    setAesProviderSettings(aesProvider); 
    result = aesProvider.CreateEncryptor().TransformFinalBlock(plainBytes, 0, plainBytes.Length); 
} 

在Xamarin.iOS它將返回AesManaged(從System.Core.dll),但是,在現實中,它調用蘋果CommonCrypto(它不是一個託管實現),它可以(根據您的設備)的硬件加速。

+0

非常感謝,它的工作原理! :) – HJR046