arraygewirr und verschub
-
ich schreib nun gerade an einem Programm, dass ganze dateien verschlüsseln soll (nach caesar algorithmus, monoalphabetisches verschlüsselungs programm)
In der alter Version, die nur für ein paar Wörter gedacht war, war die Verschlüsselungsprozedur sehr lang aber auch einfach (zu vertehen) und übersichtlich.(rund 120 zeilen)
Nun will ich es auf 5 (!!!) Zeilen reduzieren.
Zuvor erstelle ich einen Schlüssel mit meinem keycreator.
zum beispiel steht dann im schlüssel folgende zahlen:9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 1 2 3 4 5 6 7 8eine ganz simple Zahlenfolge. (geht auch besser, mit zufälliger reihenfolge, so ist es aber übersichtlicher)
so jetzt zum eigentlichen Problem.
ich lasse den schlüssel so einlesen:key.open(keypath.c_str()); //schlüssel einlesen if(file) { arrayhelper[1]=0; int zeilen = 0; zeilen = 0; while(!file.eof()) { arrayhelper[1]= arrayhelper[1] + 1; getline(file, txt); text = txt + "\n"; letter[arrayhelper[1]] = txt; convert << letter[arrayhelper[1]]; convert >> theKEY[arrayhelper[1]]; convert.clear(); zeilen++; if(zeilen == 26) // gesuchte Zeile erreicht { break; // Zeile gefunden, Einlesen abbrechen } } file.close(); }und dann will ich hiermit das "neue Alphabet" erstellen ungf so:
string alph; fixalph = "abcdefghijklmonpqrstuvwxyz"; for (;arrayhelper[2]<26;) //extrem verkürzte Verschlüsselung { arrayhelper[2]=arrayhelper[2] + 1; alphabet[arrayhelper[2]]=fixalph.substr(theKEY[arrayhelper[2]],1); alph += alphabet[[arrayhelper[2]]]; cout<<alph<<"\n"; cin.get(); }sieht kompliziert aus ist es aber gar nciht. er gibt etwa folgendes aus:
a
aa
aaa
aaaaes müsste aber:
i
ij
ijksein woran liegt es ?

-
Ich habe herausgefunden ,dass theKEY[]
immer 0 ergibt
{
}
dann ist das erstellen des alphabets kein problem.
zuerst dacht ich es läge an der convertierung mit dem stream. aber dann fiel mir auf, dass letter[arrayhelper[2]] leer ist.
warum das denn nun wieder ?
-
Um das zu wissen, bräuchte man mehr Code. Du kannst aber auch mal mit dem Debugger Zeile für Zeile durchgehen, da solltest du das Problem entdecken.
-
aber wenn ich mich nicht irre dann lese ich doch ganz logisch aus?
ausschnitt:while(!file.eof()) { arrayhelper[1]= arrayhelper[1] + 1; getline(file, txt); text = txt + "\n"; letter[arrayhelper[1]] = txt; //genau hier ! convert << letter[arrayhelper[1]]; convert >> theKEY[arrayhelper[1]]; convert.clear(); zeilen++; }ich seh mal ob er weiß was txt ist ? und text
oh mist txt und text sind auch leer, die datei ist es ganz sicher nicht, wie kann das sein.
--------------------------------------------------------------
ARGH BLIZE IM SEKUNDEN TAKT
-
Eventuell Datei-Verwirrung?
key.open(keypath.c_str()); // <-- Datei key? if(file) // <-- Datei file?
-
jupp das wars, da bin ich dann später aber auch selbst drauf gekommen