2013-09-27 15 views
5

pracuję w wersji iPada mojej aplikacji i mam funkcję w co używam AesCryptoServiceProvider na przykład następujące linieAesCryptoServiceProvider w MonoTouch

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

To działa w moim Android app (MonDroid) oraz w aplikacji .NET (WPF), ale w systemie iOS otrzymałem ten błąd;

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

Funkcja jest w moim rdzenia projektu i używam łącznik projektu odwołać go w projekcie iPada, a także korzystać z łącznika projektu w wersji Android, oczywiście w trzech platform jest ten sam plik ze wszystkimi potrzebne referencje. Używam Xamarin z Visual Studio 12.

Odpowiedz

6

Użyj metody fabrycznej Aes.Create(), a Twój kod będzie bardziej przenośny w różnych wersjach/platformach .NET. Na przykład.

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

W Xamarin.iOS powróci AesManaged (z System.Core.dll), ale w rzeczywistości, to dzwoni Jabłko CommonCrypto (to nie udało realizacja), które mogą być przyspieszane sprzętowo (w zależności od urządzenia).

+0

Wielkie dzięki, działa! :) – HJR046