Verschlüsselung von Dateien

Nachdem die in diesem KB-Artikel beschriebene Methode beim Entschlüsseln nicht so hundertprozentig wieder den Originalzustand einer Datei erzeugt. (Umlaute und Sonderzeichen wurden hier einfach etwas wildes, nicht darstellbares). Habe ich hier die Variante, die den Originalinhalt wieder erzeugt. (Key und Initialisierungsvektor sollten natürlich auf sinnvolle Werte gesetzt werden😉 ):

Verschlüsseln:

static void EncodeFile(string strFilename, string strNewFilename)
{
try
{
DESCryptoServiceProvider crypto = new DESCryptoServiceProvider();

crypto.IV = ASCIIEncoding.ASCII.GetBytes(„123454678“);
crypto.Key = ASCIIEncoding.ASCII.GetBytes(„12345678“);
crypto.Padding = PaddingMode.PKCS7;
crypto.Mode = CipherMode.ECB;

File.Delete(strNewFilename);
FileStream fsOutput = new FileStream(strNewFilename, FileMode.OpenOrCreate, FileAccess.Write);
CryptoStream cs = new CryptoStream(fsOutput, crypto.CreateEncryptor(), CryptoStreamMode.Write);

FileStream fsInput = new FileStream(strFilename, FileMode.Open, FileAccess.Read);
byte[] data = new byte[fsInput.Length];
fsInput.Read(data, 0, data.Length);

cs.Write(data, 0, data.Length);
cs.FlushFinalBlock();
cs.Close();

fsInput.Close();
fsOutput.Close();
crypto.Clear();
}
catch (FileNotFoundException e)
{
Console.WriteLine(„FEHLER – Datei “ + e.FileName + “ nicht gefunden“);
}
catch (Exception e)
{
Console.WriteLine(„FEHLER – “ + e.Message);
Console.WriteLine(„INFO – Targetsite: “ + e.TargetSite.Name);
Console.WriteLine(„INFO – Source: “ + e.Source);
}
}

Entschlüsseln:

static void DecodeFile(string strFilename, string strNewFilename)
{
try
{
DESCryptoServiceProvider crypto = new DESCryptoServiceProvider();

crypto.IV = ASCIIEncoding.ASCII.GetBytes(„12345678“);
crypto.Key = ASCIIEncoding.ASCII.GetBytes(„12345678“);
crypto.Padding = PaddingMode.PKCS7;
crypto.Mode = CipherMode.ECB;

File.Delete(strNewFilename);
FileStream fsInput = new FileStream(strFilename, FileMode.Open, FileAccess.Read);
FileStream fsOutput = new FileStream(strNewFilename, FileMode.OpenOrCreate, FileAccess.Write);

// Hier kommt jetzt der Teil, der sich unterscheidet
CryptoStream cs = new CryptoStream(fsOutput, crypto.CreateDecryptor(), CryptoStreamMode.Write);
byte[] data = new byte[fsInput.Length];
fsInput.Read(data, 0, data.Length);
cs.Write(data, 0, data.Length);

fsInput.Close();
cs.Close();
fsOutput.Close();
crypto.Clear();
}
catch (FileNotFoundException e)
{
Console.WriteLine(„FEHLER – Datei “ + e.FileName + “ nicht gefunden“);
}
catch (NullReferenceException e)
{
Console.WriteLine(„FEHLER – NullReference: “ + e.Message);
}
catch (Exception e)
{
Console.WriteLine(„FEHLER – “ + e.Message);
Console.WriteLine(„INFO – Targetsite: “ + e.TargetSite.Name);
Console.WriteLine(„INFO – Source: “ + e.Source);
Console.WriteLine(„INFO – : “ + e.HelpLink);
}
}

One thought on “Verschlüsselung von Dateien”

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s