Autor Beitrag
mmp5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 26



BeitragVerfasst: Mo 07.12.09 15:23 
Ich habe 2 Forms; Und das Form2 davon soll erst angezeigt werden, nachdem bei dem Form1 ein Benutzername und ein Passwort eingegeben wurde.
Ich speichere die Passwörter in eine pass.txt datei ab ->
benutername1,passwort1
benutername2,passwort2
benutername3,passwort3

Ich hab mir ein "ausgefuchstes" System ausgedacht, wie ich den LogIn sicher machen kann.
Meine Überlegungen waren:

1. Speichere den Benutzernamen und das passwort als Md5_Hash ab (Problem jemand geht hin macht sich nen md5 hash trägt den in die pass.txt datei ein und kommt ohne probleme)

2. Jetzt füge ich an den Benutzernamen und das Passwort einen String an und speichere es so ab und überprüfe es auch mit diesem

Programmtechnisch sieht das so aus:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
            string BenutzerName = textBox1.Text.ToString() + "kommstNETrein";
            string Passwort = passwordBox1.Password.ToString() + "kommstNETrein";
            //-----------Berechne MD5 von Benutzername
            MD5 md5_1 = new MD5CryptoServiceProvider();
            byte[] textToHash1 = Encoding.Default.GetBytes(BenutzerName);
            byte[] result1 = md5_1.ComputeHash(textToHash1);
            BenutzerName = System.BitConverter.ToString(result1);
            //-----------
            //-----------Berechne MD5 von Passwort
            MD5 md5_2 = new MD5CryptoServiceProvider();
            byte[] textToHash2 = Encoding.Default.GetBytes(Passwort);
            byte[] result2 = md5_2.ComputeHash(textToHash2);
            Passwort = System.BitConverter.ToString(result2);
            //-----------



Jetzt die Frage ... ist das Sicher genug?
Ich hab mal gehört, dass man in die *.exe "reinschauen" kann und damit könnte man sich ja meine geheime Phrase raussuchen und sich wieder eigene md5+phrase hashes machen?
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mo 07.12.09 16:15 
So ist es, das nennt sich Reflection. Auch mit Obfuscator kann man es einem Hacker nur etwas schwerer machen, aber nicht unmöglich.

Sichere Passwörter gibt es sowieso nicht; es geht nur darum, das Knacken "angemessen" zu erschweren. Dein Ansatz mit der String-Verlängerung ist schon eine gute Idee; ich habe dazu den vollständigen Klassennamen der Verschlüsselungsmethode genommen, der steht nirgends als String in meinem Quelltext.

Wenn du davon ausgehen kannst, dass "deine" Benutzer solche Cracks sind, dann kannst du auf eine Verschlüsselung ganz verzichten. Wenn du ihnen zutraust, eine xml-Datei zu prüfen und zu ändern, dann bau' in deine Anwendung noch eine Codierung ein, sodass das, was in der xml-Datei steht, nicht das ist, was als Passwort einzugeben ist.

Ergänzend kannst du noch die Hash-Verschlüsselung und das Codieren von verschiedenen Klassen erledigen lassen; dann muss der Hacker noch etwas länger suchen.

Übrigens wird MD5 nicht mehr empfohlen, weil es zu schnell geknackt werden kann; ich habe aber vergessen, was jetzt brauchbar ist. Such einmal in Foren danach.

Gruß Jürgen

PS. Überprüfe einmal deinen Code. Eine ganze Reihe der ToString-Aufrufe sind überflüssig; was schon ein String ist, kann direkt als solcher verwendet werden.