2013-09-27 22 views
5
yılında

AesCryptoServiceProvider Benim app iPad versiyonunda çalışıyorum ve aşağıdaki satırları örneğin <code>AesCryptoServiceProvider</code> kullandığınız bir işleve sahip MonoTouch

Benim Android uygulamasında (MonDroid) çalışır
using (AesCryptoServiceProvider aesProvider = new AesCryptoServiceProvider()) 
{ 
    setAesProviderSettings(aesProvider); 
    result = aesProvider.CreateEncryptor().TransformFinalBlock(plainBytes, 0, plainBytes.Length); 
} 

ve bir .NET (WPF) uygulaması ama iOS'ta bu hatayı aldım;

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

işlev benim çekirdek projesinde ve ben iPad projede referans olarak kullanmak için proje bağlayıcı kullanmak ve ayrıca üç platformlarda tabii ki, Android sürümünde proje linker kullanan tüm ile aynı dosyasıdır İhtiyaç duyduğu referanslar. Xamarin'i Visual Studio 12 ile birlikte kullanıyorum.

cevap

6

Aes.Create() fabrika yöntemini kullanın ve kodunuz farklı .NET sürümleri/platformları arasında daha taşınabilir olacaktır. Örneğin.

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

Xamarin.iOS yılında donanım (cihazlarınızda bağlı olarak) hızlandırılmış olabilir (bir yönetilen uygulama değil) Apple CommonCrypto aradığını, gerçekte, AesManaged ( System.Core.dll itibaren) dönmek fakat olacaktır.

+0

Çok teşekkürler, işe yarıyor! :) – HJR046