【问题标题】:AesCryptoServiceProvider in MonoTouchMonoTouch 中的 AesCryptoServiceProvider
【发布时间】:2013-09-27 14:48:57
【问题描述】:

我正在使用我的应用程序的 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 一起使用。

【问题讨论】:

    标签: ios .net xamarin.ios cryptography aes


    【解决方案1】:

    使用工厂方法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(它不是托管实现)(取决于您的设备)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 2015-01-28
      • 2012-12-15
      • 2018-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多