Am Ende wird ein spezieller CryptoStream instantiiert und angewiesen, an welchen darunter liegenden Stream er die Daten leiten soll, welches Objekt die Transformation der Daten ausführen soll und ob der Stream Daten lesen oder schreiben soll:
Jetzt schreiben Sie einfach die Version der Originaldatei als Byte-Array in den CryptoStream. Dazu lesen Sie die Originaldatei mit einem BinaryReader, dessen ReadBytes-Methoden ein Byte-Array erstellen. Im folgenden kleinen Ausschnitt aus Listing A liest der BinaryReader den Input-Stream der Originaldatei und seine ReadBytes-Methode wird als Parameter des Byte-Arrays für die CryptoStream.Write-Methode aufgerufen. Beachten Sie den wichtigen Aufruf der FlushFinalBlock-Methode von CryptoStream:
Das Ergebnis ist eine temporäre Datei, die die verschlüsselte Version der Originaldatei enthält. Listing A kehrt den Prozess dann um, entschlüsselt die temporäre Datei und zeigt de entschlüsselten Text an der Konsole an. So können Sie sicher sein, dass der Weg über die Verschlüsselung zurück zur Entschlüsselung tatsächlich funktioniert. Ich zeige hier nicht jede Zeile der Entschlüsselung, doch der wichtige Unterschied ist, dass der Algorithmus mithilfe von CreateDecryptor eine Entschlüsselungsinstanz von ICryptoTransform erstellt und dann ein neuer CryptoStream verwendet wird um die verschlüsselte Datei zu lesen.
Wenn Sie über mehrere Windows-Sitzungen hinweg Dateien ver- und entschlüsseln, möchten Sie sicher den symmetrischen Schlüssel und den IV beibehalten und wieder aufrufen können. Sie stehen in den Provider-Klassenobjekten als Byte-Arrays zur Verfügung (z.B. TripleDESCryptoServiceProvider.Key), also könnten Sie sie technisch direkt in eine Datei speichern. Das ist jedoch gefährlich. Eine bessere Lösung ist es, die Möglichkeiten zur Schlüsselverwaltung im Namensraum System.Security.Cryptography zu verwenden. Sie würden insbesondere die asymmetrischen Provider wie z.B. RSA verwenden um Ihre symmetrischen Schlüssel zu speichern. Die Möglichkeiten zur Schlüsselverwaltung würden den Rahmen dieses Artikels sprengen, doch in der MSDN .NET-Dokumentation können Sie mehr über die Klasse CspParameters und die Eigenschaft PersistKeyinCsp des RSA-Providers lesen.
Neueste Kommentare
Noch keine Kommentare zu .NET entmystifiziert die Verschlüsselung
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.