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.
Kontinuierliche Content Produktion und Markenaufbau sind essentieller Pfeiler von langfristigen Unternehmenserfolg. Das ist mittlerweile auch…
KI-Funktionen beschleunigen die Erholung des PC-Markts. Der Nettogewinn legt um 44 Prozent zu, der Umsatz…
Googles App-Entwickler-Kit dient der Tarnung des schädlichen Codes. Der Sicherheitsanbieter Jamf hält die Schadsoftware für…
Ausgeklügelte Phishing-Kampagne verwendet eine weiterentwickelte Version der Rhadamanthys-Stealer-Malware.
Die EU-Kommission kritisiert die Verknüpfung von Facebook und dem hauseigenen Online-Kleinanzeigendienst. Sie sieht darin einen…
Fast zwei Drittel halten jedoch eine Umsetzung aller Vorgaben von NIS 2 bis Jahresende für…