Hallo liebe Community,
ich hoffe das ich dieses Thema an der richtigen Stelle verfasst habe. Wenn nicht bitte ich dies zu entschuldigen.
Im Rahmen einen Projektes ist es unsere Aufgabe, die Verschlüsselung nach der Trithemius Tafel in c# anhand von Arraylists zu erstellen. Nach Stundenlangen grübeln komme ich leider nicht auf die Lösung.
Zur Erklärung (Trithemius Tafel):
Eine Liste mit den kleinen Alphabet ist angelegt worden und die Tests fanden nur mit Kleinbuchstaben statt.
Eingegebenes Wort (richTextBox1): H A L L O
Wort im Index des Alphabetes: 7 0 11 11 14
Eingegebenes Passwort (TextBox1): H U N D
Passwort im Index des Alphabetes: 7 20 13 3
Da das Passwort einen Buchstaben weniger hat als das zu verschlüsselnde Wort wird via modulo der Anfangsbuchstabe wiederholt.
Also ist das Passwort: H U N D H
und der Index: 7 20 13 3 7
Die Indexe beider Wörter werden im nächsten Schritt addiert:
7 0 11 11 14
+7 20 13 3 7
14 20 24 14 21
Die Zahlen werden wieder mit dem Alphabet abgeglichen und sollen wieder ein Wort ergeben, welches in diesen Fall dann die Verschlüsselung ist.
Also: O U Y O V (Soll in richTextBox2 ausgegeben werden)
Mein Problem ist jetzt das dies bei mir nicht so ganz hinhaut.
Sofern ich ein 5 Stelliges Passwort eingebe bekomme ich zwar eine Verschlüsselung zurück, jedoch ist es unabhängig von dem Passwort immer die selbe. Dessweiteren kann ich kein Passwort eingeben das weniger Buchstaben als das Wort "Hallo" hat.
Hier mein Quelltext dazu:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54:
| private void button6_Click(object sender, EventArgs e) { string Eingabe = richTextBox1.Text; string Passwort = textBox1.Text; string Ausgabetext = "";
ArrayList kleinbList = new ArrayList(); for (int j = 0; j < kleinbuchstaben.Length; j++) { kleinbList.Add(kleinbuchstaben[j]); }
ArrayList Eingabeliste = new ArrayList(); for (int k = 0; k < Eingabe.Length; k++) { Eingabeliste.Add(Eingabe[k]); int r = Convert.ToInt16(kleinbList.IndexOf(Eingabe[k].ToString())); }
ArrayList Passwortliste = new ArrayList(); for (int g = 0; g < Passwort.Length; g++) { Passwortliste.Add(Passwort[g]); }
ArrayList LangesPasswort = new ArrayList();
int p = Eingabe.Length / Passwort.Length + Passwort.Length;
for (int q = 0; q <= p; q++) { for (int a = 0; a < Passwort.Length; a++) { LangesPasswort.Add(Passwort[a]); } }
ArrayList Codierung = new ArrayList(); for (int s = 0; s < Eingabe.Length; s++) { Codierung.Add(Convert.ToInt16(Eingabeliste[s])+ Convert.ToInt16(kleinbList.IndexOf(LangesPasswort[s]))); int x = Convert.ToInt16(kleinbList.IndexOf(Passwort[s].ToString())); if (kleinbList.Contains(Eingabe[s].ToString())) { Ausgabetext += kleinbList[s]; } else { Ausgabetext += Eingabe[s];
} richTextBox2.Text = Ausgabetext; } } |
Ich würde mich sehr freuen wenn mir jemand weiterhelfen könnte, weil ich den Fehler nicht finde.
Gruß Patrick
Moderiert von
Th69: Topic aus WinForms verschoben am Do 02.02.2012 um 13:01