UCrypto-Klasse

Verschlüsselt Zeichenketten und Daten sicher für den angemeldeten Benutzer oder den lokalen Rechner mit dem Windows-API. Ein zusätzlicher Schlüssel wird nicht benötigt.

Windows-Verschlüsselung

Windows verfügt bereits über die Infrastruktur, Daten für den angemeldeten Benutzer so zu verschlüsseln, dass eine Anmeldung am Benutzerkonto erforderlich ist, um die Daten wieder entschlüsseln zu können. Die kryptografischen Schlüssel sind dabei so abgelegt, dass sie nicht oder nur schwer von einem anderen Benutzer oder auf anderen Computern verwendet werden können. Dieses Verfahren eignet sich also hervorragend dazu, sensitive Daten wie vom Benutzer eingegebene Kennwörter für andere Dienste sicher abzulegen. Dennoch ist der Zugriff darauf sehr einfach, da der Entwickler sich nicht mit der sonst notwendigen sicheren Schlüsselverwaltung beschäftigen muss.

Die Verwendung der Klasse ist sehr einfach. Die Encrypt-Funktion nimmt die zu verschlüsselnde Zeichenkette entgegen und liefert sie verschlüsselt in Base64-Kodierung zurück. So lässt sich auch der verschlüsselte Text einfach in Datenbanken oder XML-Dateien abspeichern. Die Decrypt-Funktion konvertiert diese Base64-Darstellung wieder zurück in die ursprüngliche Zeichenkette. Die Daten können so direkt verwendet werden.

Die Funktionen EncryptDataToStream und DecryptDataFromStream werden von den o. g. Funktionen aufgerufen und arbeiten auf Streams und Byte-Arrays statt Zeichenketten.

Die gewählte Verschlüsselung ist vom angemeldeten Benutzer abhängig. Andere Benutzer können diese Daten also nicht entschlüsseln. Auch auf einem anderen Rechner ist die Entschlüsselung nicht möglich. Um einen anderen Verschlüsselungsbereich (Scope) einzustellen, muss der Parameter vom Typ DataProtectionScope geändert werden.

Weitere Informationen zum Thema gibt es in der MSDN-Bibliothek.

RSA

Diese Klasse enthält außerdem Funktionen zum Umgang mit RSA-Verschlüsselung, die ich aber sehr lange nicht mehr verwendet habe und die daher von derzeit unbekannter Qualität sind. Auch der Sicherheitsaspekt wäre noch zu klären.

AES (Rijndael)

Ich habe auch noch einen CodeProject-Artikel dazu gefunden, der die AES-Verschlüsselung erklärt. Dessen Funktionen sind hier ebenfalls enthalten, sind aber noch völlig ungetestet und müssen noch aufbereitet werden. Dafür wird auch noch ein Beispiel zur Verwendung dieser Klasse folgen.

Kompatibilität: .NET Ab Version 2.0

Download

UCrypto.cs22,6 KiBQuelltext der UCrypto-Klasse

Lizenz und Nutzungsbedingungen

Vervielfältigung und Weiterverbreitung dieser Datei, verändert oder unverändert, sind gestattet, vorausgesetzt die Urheberrechtsangabe und dieser Hinweis bleiben erhalten. Diese Datei wird wie vorliegend ohne jegliche Garantie oder Gewährleistung angeboten. (GNU All-Permissive-Lizenz)

Statistische Daten

  • Erstellt am 2007-05-27, aktualisiert am 2012-12-17.