2017-05-17 5 views
1

Ich habe ein paar einfache Verschlüsselungsfunktionen, die ich in einer neuen UWP-App für Windows 10 verwenden muss. Da AesManaged in UWP nicht verfügbar ist, habe ich Windows.Security betrachtet. Cryptography.Core Docs und Posts hier, aber es scheint nicht zu funktionieren. Zum Beispiel habe ich nicht gefunden, wo ich Padding einstellen soll. Die zwei Funktionen verschlüsseln und entschlüsseln den Inhalt eines Byte-Array-Puffers unter Verwendung eines Schlüssels auch in einem Byte-Array.AES-Verschlüsselung in UWP für Xamarin Forms-Projekt

byte[] Buffer; 

    private void EncryptBuff(byte[] sessionKey) 
    { 
     AesManaged myAes = new AesManaged(); 

     myAes.Mode = CipherMode.ECB; 
     myAes.KeySize = 128; 
     myAes.Key = sessionKey; 
     myAes.Padding = PaddingMode.Zeros; 

     ICryptoTransform encryptor = myAes.CreateEncryptor(); 
     Buffer = encryptor.TransformFinalBlock(Buffer, 0, Buffer.Length); 
    } 

    private void DecryptBuff(byte[] sessionKey) 
    { 
     AesManaged myAes = new AesManaged(); 

     myAes.Mode = CipherMode.ECB; 
     myAes.KeySize = 128; 
     myAes.Key = sessionKey; 
     myAes.Padding = PaddingMode.Zeros; 

     ICryptoTransform decryptor = myAes.CreateDecryptor(); 
     Buffer = decryptor.TransformFinalBlock(Buffer, 0, Buffer.Length); 
    } 

Jede Hilfe, die dies übersetzt, um in einer UWP-App zu laufen, würde sehr geschätzt werden. Dieser Code wird für die Kommunikation mit einem vorhandenen Hardware-Controller verwendet, sodass ich keine Änderungen vornehmen kann, um die Sicherheit zu verbessern.

Auch dies ist für ein Xamarin Android/iOS/UWP-Projekt, also was ich sagen kann, ist .NET Core leider keine Option. Der ursprüngliche Code funktioniert gut in Android/iOS, aber nicht UWP.

Danke!

+0

http://StackOverflow.com/a/41714595/3888657 Werfen Sie einen Blick auf diese Antwort. Sie können den Mode/Padding über den AlgorithmName ändern. – TheTanic

Antwort

2

Während AesManaged in .NET Core 1.0 oder 1.1 nicht verfügbar ist, ist Aes.Create() verfügbar. Wenn Sie ersetzen

AesManaged myAes = new AesManaged(); 

mit

Aes myAes = Aes.Create(); 

Alles wird nur auf die .NET-Core/UWP-Pakete arbeiten.

+0

Danke bartonjs, aber ich habe vergessen zu sagen, dass dies eine plattformübergreifende Xamarin Forms App ist, also anscheinend kein .NET Core. :-(Ihr wäre eine tolle Lösung, wenn ich es trotzdem benutzen könnte! Danke. – MPM

Verwandte Themen