![]() |
Frage an Programmierer
Hallo Programmierer. Jaja, ich weiss, wird sicherlich nicht ganz so hier her gehören aber ich würde doch gerne mal um Hilfe fragen, da ich in vielen anderen Foren nur die Antwort bekommen habe "Wer ein verschlüsselungsprogramm schreibt, der muss auch ein
Entschlüsselungsprogramm selber schreiben können." Naja, wie die Aussage schon sagt, ich habe ein grosses Problem mit meinem Entschlüsselungsprogramm. Es läuft einfach nicht richtig. Verschlüssler: #include <iostream> #include <cstdlib> #include <fstream> using namespace std; char* cencrypt(char* in, char key='5') { char lchar = 0; int length = strlen(in); char* out = new char[length+1]; for(int i=0;i<length;i++) { out[i] = in[i] + key + (lchar % key); lchar = in[i]; } out[length] = 0; return out; } int main() { char eingabe[255] = {0}; int i = 0,x = 0,schluessel = 0; div_t weiter; cout<<"Codierung"<<endl; cout<<"Bitte Ihren Text (max. 255 Zeichen) :"; cin.getline(eingabe,255); cout << "\n Der verschluesselte Text lautet : \n\n"; char *enc = cencrypt(eingabe); cout << enc << endl; ofstream ofs ("converted.txt"); ofs << enc <<endl; delete [] enc; } Entschlüssler: #include <iostream> #include <cstdlib> #include <fstream> using namespace std; char* cencrypt(char* in, char key='5') { char lchar = 0; int length = strlen(in); char* out = new char[length-1]; for(int i=0;i<length;i++) { out[i] = in[i] - key - (lchar % key); //Überall,wo ein + stand, steht jetzt ein Minus, um den Code imzurechnen. lchar = in[i]; } out[length] = 0; return out; } int main() { char eingabe[255] = {0}; int i = 0,x = 0,schluessel = 0; div_t weiter; ifstream in ("converted.txt"); cout << "\n Der verschluesselte Text lautet : \n\n"; in.getline(eingabe,255); char *enc = cencrypt(eingabe); cout << enc << endl; delete [] enc; while ('a'); } Bitte helft mir, sitze da nämlich schon ewig dranne. BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE, BITTE. |
genialer Algo ;)
ich habe wirklich keine Lust, Fehler zu suchen, aber einer ist auffällig: in deinem Decoder setzt du deinen 'key' auf den INPUT (== gecrypteten) String, während du beim Encoden den Key auf den INPUT ( == UNgecrypteten !) String setzt - dat kann so nicht jehn... HansJürgen |
Hallo.
Vielen Dank. Leider bin ich zu dumm dafür. Ich hoffe, das mir dabei noch mal jemand helfen kann. Vielen Dank im Vorraus. mfg Atze. |
"es läuft einfach nicht richtig" ist schon eine sehr hilfreiche Fehlerbeschreibung...
|
Zitat:
Wenn du im Entschlüssler "lchar = in[i]" ersetzt durch "lchar = out[i]", dann hast du eine Chance, weiter zu kommen... Hans-Jürgen |
Hallo.
Ich habe es jetzt so gemacht, aber leider kommt jetzt ein Debug-Error, der im angehängten Bild zu sehen ist. Was habe ich falsch gemacht??? Vielen Dank im Vorraus. mfg Atze. Achja, die angehängte Fehlermeldung ist natürlich sehr aufschlussreich, findet ihr nicht??? |
oh, oh... Bild vergessen.
|
Die Fehlermeldung ist doch eindeutig, oder? ;)
Sie bedeutet einfach nur, dass du auf Speicherbereiche zugreifst, die vorher nicht reserviert wurden. Du erstellst einen nullterminierten string der Länge (length -1): char* out = new char[length-1]; und greifst aber mit: out[length] = 0; auf das das Element length zu. Ändere die Zeile: char* out = new char[length-1]; wie folgt: char* out = new char[length+1]; dann sollte das Programm arbeiten, vorausgesetzt, du hast Hans-Jürgen's Hinweis befolgt und "lchar = in[i]" durch "lchar = out[i]" ersetzt. Steffen |
er könnte übrigens auch im Decoder "lchar = in[i]" durch "lchar = out[i]" ersetzen, oder ? :p
Zusatzfrage: wird's dadurch sicherer ? :D Lerneffekt: mal sehen, ob's dann genau so funktioniert :rolleyes: HansJürgen |
Hallo.
Es hat alles prima geklappt. Weiss villeicht jemand, wie ich das mache, dass der Entschlüsseler auch Zeilenumbrüche einliest??? Danke für eure Antworten. mfg Atze |
Alle Zeitangaben in WEZ +2. Es ist jetzt 06:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag