MonoTouch中的AesCryptoServiceProvider

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

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),但实际上,它调用的是苹果CommonCrypto(它不是托管实现),可以根据您的设备进行硬件加速。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接