5

我正在使用我的应用程序的 iPad 版本,并且我有一个我使用的功能AesCryptoServiceProvider,例如以下几行

 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 版本中使用项目链接器,当然在三个平台中是同一个文件,其中包含它需要的所有引用。我将 Xamarin 与 Visual Studio 12 一起使用。

4

1 回答 1

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),但实际上,它正在调用可以硬件加速的 Apple CommonCrypto(它不是托管实现)(取决于您的设备)。

于 2013-09-27T14:53:49.117 回答