UCrypto class

Securely encrypts strings and data for the logged in user or the local computer with the Windows API. A separate key is not required.

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.

Compatibility: .NET Version 2.0 or newer

Download

UCrypto.cs22.6 KiBQuelltext der UCrypto-Klasse

Licence and terms of use

Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved. This file is offered as-is, without any warranty. (GNU All-Permissive licence)

Statistic data

  • Created on 2007-05-27, updated on 2012-12-17.