Entwickler-Ecke

Basistechnologien - Verschlüsselung - Wo liegt der Fehler


Yaddle - So 21.08.11 10:19
Titel: Verschlüsselung - Wo liegt der Fehler
Hey Leute,

ich versuche derzeit eine Cmd-Verschlüsselungssoftware zu schreiben. Habe auch schon ordentlich was geschaftt, aber der Cmd gibt mir immer nur Leerzeichen aus und ich weiß nicht wo der Fehler liegt.


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:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
namespace Key
{
    class Program
    {
        static char[] alpha = "abcdefghijklmnopqrstuvwxyz .:,;-?!()".ToCharArray();
        static void Main(string[] args)
        {
            string stringinput;
            Console.WriteLine("Geben Sie den zu verschlüsselnen Text ein...");  //Eingabe auslesen + formatieren
            stringinput = Console.ReadLine();
            stringinput = stringinput.ToLower();

            double Key;
            Console.WriteLine("Geben Sie die Verschlüsselung ein..."); //Schlüssel auslesen
            Key = Convert.ToDouble(Console.ReadLine());

            if (Key > alpha.Length)
            {
                Key = Key - (Convert.ToDouble(alpha.Length) * Math.Floor(Key / Convert.ToDouble(alpha.Length)));
            }
            if (Key < -alpha.Length)
            {
                Key = Key + (Convert.ToDouble(alpha.Length) * Math.Floor(-Key / Convert.ToDouble(alpha.Length)));
            }
                    
            char[] charArr = stringinput.ToCharArray(); //Array mit Eingabe-Buchstaben anlegen

            char[] outputarr = new char[charArr.Length]; // OutputArray mit der selben Größe anlegen

            outputarr = Verschlüsseln(charArr,Key);  //Zuweisung des Outputs

            
            
            Console.WriteLine(outputarr); //Ausgabe des verschlüsselten Textes
            Console.ReadLine(); // Console offen halten
        }

        static char[] Verschlüsseln(char[] input, double key) 
        {
             // char-Array mit erlaubten Zeichen
            char[] output = new char[input.Length];                                                                     // Rückgabe-Array mit größe des Input Arrays
            int x = input.Length;                                               // Größe des Inputarrays
            double newindex;                                                    // neuer index für das Alphabetsarray
            
            for (int j = 0; j < x; j++)                                         // für die Länge der Eingabe
            {
                
                for(int k = 0;k > alpha.Length;k++)                                                     
                {
                    if (input[j].ToString() == alpha[k].ToString())                                       // 
                    {
                        newindex = Convert.ToDouble(k) + key;
                        if (newindex > alpha.Length)
                            {
                            newindex -= alpha.Length;
                            }
                        output[j] = alpha[Convert.ToInt32(newindex)];
                        break;
                    }
                }

            }
            return output;
        }
            
    }

        
}

Achja, ich erhalte keine Fehler-Meldungen nur am Rande :)

Bedanke mich jetzt schoneinmal für eure Hilfe
Greetz

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


gfoidl - So 21.08.11 15:12

Hallo,

geh mit dem Debugger durch und schau dir die Werte an. Dann kannst du feststellen wo sich das Programm anders verhält als gewollt. Und dann halt so korrigieren dass es passt.


mfG Gü


Xcalibur - Mo 22.08.11 13:09

Hey


C#-Quelltext
1:
for(int k = 0;k > alpha.Length;k++)                    


da wird nie was passieren den alpha.length wird niemals kleiner als k sein wenn k bei 0 startet.

also stattdessen mal


C#-Quelltext
1:
for(int k = 0;k < alpha.Length;k++)                    


Gruß Xcalibur


C# - Do 08.09.11 18:57

Hey,

müsstest du statt

C#-Quelltext
1:
for (int j = 0; j < x; j++)                    

nicht

C#-Quelltext
1:
for (int j = 0; j > x; j++)                    

machen?
Sonst ist wird die schleife ja nicht ausgeführt weil wenn j = 0 startet ist es doch schon kleiner als x.