Ich arbeite derzeit an einer Metro-Anwendung (C#/XAML), die eine Dateiverschlüsselung erfordert. In Winforms und WPF muss ich dazu nur Folgendes schreiben
System.IO.File.Encrypt("file.txt");
Wie kann ich dasselbe in WinRT machen?
Ich arbeite derzeit an einer Metro-Anwendung (C#/XAML), die eine Dateiverschlüsselung erfordert. In Winforms und WPF muss ich dazu nur Folgendes schreiben
System.IO.File.Encrypt("file.txt");
Wie kann ich dasselbe in WinRT machen?
Erstens würde ich niemals System.IO.File.Encrypt verwenden, um eine Datei zu verschlüsseln.
Zweitens würde ich mir die folgende Dokumentation ansehen: Windows Runtime API
Drittens würde ich die Datei mit einem ähnlichen Verfahren verschlüsseln, das hier und hier beschrieben ist.
public MainWindow()
{
InitializeComponent();
byte[] encryptedPassword;
// Erstellen einer neuen Instanz der RijndaelManaged
// Klasse. Dadurch wird ein neuer Schlüssel und ein Initialisierungsvektor (IV) generiert.
using (var algorithm = new RijndaelManaged())
{
algorithm.KeySize = 256;
algorithm.BlockSize = 128;
// Verschlüsseln des Strings in ein Byte-Array.
encryptedPassword = Cryptology.EncryptStringToBytes("Password",
algorithm.Key, algorithm.IV);
}
string chars = encryptedPassword.Aggregate(string.Empty,
(current, b) => current + b.ToString());
Cryptology.EncryptFile(@"C:\Users\Ira\Downloads\test.txt", @"C:\Users\Ira\Downloads\encrypted_test.txt", chars);
Cryptology.DecryptFile(@"C:\Users\Ira\Downloads\encrypted_test.txt", @"C:\Users\Ira\Downloads\unencyrpted_test.txt", chars);
}
Meines Verständnisses nach ist WinRT für Anwendungen konzipiert, die in einer Sandbox ausgeführt werden und keinen direkten Dateizugriff haben.
Für den direkten Dateizugriff benötigen Sie wahrscheinlich einen Nicht-WinRT-Dienst (z. B. Win32 / .NET Desktop-API) und die WinRT-Anwendung muss mit dem Dienst kommunizieren.
Leider wird dies in WinRT etwas mehr Arbeit erfordern. Da die meisten Funktionen asynchron sind, benötigen Sie etwas mehr Boilerplate und werden mit Streams und IBuffer
s anstelle von Dateien direkt arbeiten. Die Kryptoklassen befinden sich im Windows.Security.Cryptography
Namespace.
Ein Beispiel mit einem IBuffer
finden Sie hier.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.