Autor Beitrag
PatPainful
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 01.02.12 22:07 
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:

ausblenden volle Höhe C#-Quelltext
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 user profile iconTh69: Topic aus WinForms verschoben am Do 02.02.2012 um 13:01
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 02.02.12 14:00 
Hallo PatPainful :welcome:

du solltest das Programm mal schrittweise mit dem Debugger durchgehen, dann kannst du selber die Fehler rausfinden...

P.S. Anstatt ArrayList sollte man ab .NET 2 besser die typisierte List<T> verwenden.

Ich habe deinen Beitrag mal verschoben, da das Problem mit WinForms direkt ja nichts zu tun hat.