Daten an einen Benutzer oder PC binden

von Maximilian Samstag, 10. Juli 2010 22:05

Will man in einem Programm sensible Informationen wie z.B. Passwörter schützen so sollte man diese beim Speichern nach Möglichkeit verschlüsseln. Um zu verhindern, dass fremde beim Zugriff auf den PC einfach die Daten kopieren und auf einem anderen PC entschlüsseln können gibt es seit Windows XP die DPAPI (Data Protection API) welche Daten so verschlüsseln kann, dass man diese nur entweder auf dem gleichen PC oder nur mit dem gleichen Benutzeraccount wieder entschlüsseln kann.

Für diese native API gibt es im .NET Framework eine Wrapperklasse mit dem Namen ProtectedData welche sich im System.Security.Cryptography-Namespace befindet. Dazu muss allerdings vorher das Assembly System.Security.dll eingebunden werden. Im folgenden ein kleines Beispiel:

//Geheimer Zusatzschlüssel um zu gewährleisten, dass nur die eigene Anwendung die Daten entschlüsseln kann.
byte[] secretBytes = new byte[] { 13, 1, 23, 44, 22, 74 };

//Die Daten als Bytearray die verschlüsselt werden sollen, z.B. ein String:
byte[] plainData = Encoding.Default.GetBytes("Hallo Welt");

//Verschlüsseln
byte[] encodedData =
System.Security.Cryptography.ProtectedData.Protect(plainData, secretBytes, System.Security.Cryptography.DataProtectionScope.CurrentUser);

//Entschlüsseln
byte[] decodedData =
System.Security.Cryptography.ProtectedData.Unprotect(encodedData, secretBytes, System.Security.Cryptography.DataProtectionScope.CurrentUser);

Bei portablen Anwendungen welche auf mehreren Rechnern ausgeführt- und die gleichen Settings verwenden sollen würde ich allerdings auf eine andere Methode setzen, sonst führt das unweigerlich zu Problemen.

Tags: , , , , , ,

Abgelegt unter: Entwicklung

Spenden

Dir gefällt meine Arbeit? Dann kannst du mich mit einer Spende über PayPal unterstützen:

PayPal Spenden /></a>

Neueste Kommentare

Comment RSS