Fehler beim schreiben/lesen in/aus Datei?
-
Hallo.
Ich möchte einen Datenbestand zeilenweise in eine Datei ablegen und später wieder einlesen können und damit arbeiten. Da der Datenbestand viele Zeichenketten sind, wollte ich diesen per XOR unkenntlich machen und so verschlüsselt ablegen.
Grund ist schlicht, das nicht jeder die Texte lesen oder einlesen können soll.Ich sitze nun schon an den paar Zeilen praktisch den ganzen Tag und bin voll entnervt und versuch nun hier professionelle Hilfe zu bekommen. (Nein nicht von einem Arzt meines Vertrauens mit Zwangsjacke)
void XOR(char *value,char *key) { unsigned int klen=strlen(key); unsigned int vlen=strlen(value); unsigned int k=0; unsigned int v=0; for(v;v<vlen;v++) { value[v]=value[v]^key[k]; k=(++k<klen?k:0); } } int main(int argc, char* argv[]) { char value[][256] = {"^1234567890ßß´°!\"§$%&/()=?`*+~#'", "Um Windows OneCare Live zu installieren, benötigt man einen Rechner mit englischem Windows XP und installiertem Service Pack 2.", "Nutzer anderer Betriebssysteme (inklusive Windows Vista) oder Service Packs gehen leer aus.", "Zudem lässt sich das Programm nur installieren, wenn die Regions- und Spracheinstellungen auf Englisch eingestellt sind. Andere Einstellungen werden erst mit späteren Versionen veröffentlicht." }; char *key="'#~´^"; // FEHLER: INDEX 0 WIRD NICHT KORREKT WIEDERGEGEBEN for (int i=0;i<4;i++) { printf("Länge:%d\n",strlen(value[i])); printf("original text: %s\n\n",value[i]); XOR(value[i],key); printf("crypt text: %s\n\n",value[i]); XOR(value[i],key); printf("decrypt text: %s\n\n",value[i]); } char value2[][256] = {"^1234567890ßß´°!\"§$%&/()=?`*+~#'", "Um Windows OneCare Live zu installieren, benötigt man einen Rechner mit englischem Windows XP und installiertem Service Pack 2.", "Nutzer anderer Betriebssysteme (inklusive Windows Vista) oder Service Packs gehen leer aus.", "Zudem lässt sich das Programm nur installieren, wenn die Regions- und Spracheinstellungen auf Englisch eingestellt sind. Andere Einstellungen werden erst mit späteren Versionen veröffentlicht." }; // probieren wir es mal zu speichern ofstream outFile("crypt.txt", ios::binary | ios::ate | ios::out); if (outFile) { for (int i=0;i<4;i++) { XOR(value2[i],key); outFile << value2[i] << endl; } } outFile.close(); // und nun wieder zu einzulesen ifstream inFile; inFile.open("crypt.txt", ios::binary | ios::in); if (inFile) { char buffer[256]; while (!inFile.eof()) { inFile.getline(buffer,256); XOR(buffer,key); printf("l:%d\ns:%s\n",strlen(buffer),buffer); } inFile.close(); } getch(); return 0; }Der erste Fehler ist das er scheinbar so arge Probleme mit Sonderzeichen hat.
Problem 2. Ist das beim einlesen nur INDEX 1 richtig dargestellt wird. Der Rest ist teilweise oder totaler Schrott. Vielleicht ist schon beim ablegen in die Datei was passiert?
Ich möchte lediglich Texte unleserlich ablegen und später wieder so einlesen das ich damit arbeiten kann. Ich wäre wirklich überalles Dankbar wenn mir jemand helfen kann .. ausser sowas wie "so geht das sowieso nicht!" oder "du musst das 5 Byte dreimal durch die Schlaufe ziehen"

Danke ^^
-
Ich habe vergessen die Ausgaben noch einzufügen.
HTML spielt mir hier bissle ein Streich aber wie man sieht wird alles bis auf den ersten (index 0) Durchlauf richtig wiedergegeben.
Lõnge:32 original text: ^1234567890▀▀┤░!"º$%&/()=?`*+~#' crypt text: y↕Lçj↕§Iîg↨³í decrypt text: ^1234567890▀▀ Lõnge:127 original text: Um Windows OneCare Live zu installieren, ben÷tigt man einen Rechn er mit englischem Windows XP und installiertem Service Pack 2. crypt text: rN^Ò7IG◄├-l►Ð↔FQ←ö↕NU←ö$R♥↨┌-SB↕Ï7BQ←┌rA←┌¿SJ↓└~JB►ö;NM←┌~uF↔▄0BQ^┘7 Î6BN^Ò7IG◄├-{.ö+IG^¦0TW▼Ï2NF♀└;J♥-Ð,QJ↔Ð~wB↔▀~§ decrypt text: Um Windows OneCare Live zu installieren, ben÷tigt man einen Rechne r mit englischem Windows XP und installiertem Service Pack 2. Lõnge:91 original text: Nutzer anderer Betriebssysteme (inklusive Windows Vista) oder Ser vice Packs gehen leer aus. crypt text: iV ╬;U♥▼┌:BQ←ã~eF └?♫♥◄ð;U♥-Ð,QJ↔Ð~wB↔▀-D←▄;I♥↕Ð;U♥▼┴- decrypt text: Nutzer anderer Betriebssysteme (inklusive Windows Vista) oder Serv ice Packs gehen leer aus. Lõnge:192 original text: Zudem lõsst sich das Programm nur installieren, wenn die Regions- und Spracheinstellungen auf Englisch eingestellt sind. Andere Einstellungen wer den erst mit spõteren Versionen ver÷ffentlicht. ¦=O♥→ı-s♀█9UB‼┘~IV♀ö7IP ı2KJ←ã;I☼^├;IM^ð7B♥,Ð9NL►ÃsV►ð~tS♀ı=OF↨┌-SF↕Ï+ID←┌~FV↑ö←ID↕¦-DK^Ð7ID←Ã*BO↕└~TJ►ð pb►ð;UF^±7IP Ð2KV►Ë;I♥ Ð,CF►ö;UP ö3NW^Ã.├W←ã;I♥(Ð,TJ◄┌;Ð,ÐE↑Ð0SO↨Î6S decrypt text: Zudem lõsst sich das Programm nur installieren, wenn die Regions- und Spracheinstellungen auf Englisch eingestellt sind. Andere Einstellungen werd en erst mit spõteren Versionen ver÷ffentlicht.//#############################################
In der Speicherung und Ausgabe, sieht man das lediglich Index 1 komplett ausgegeben wird. Der Rest ist einfach nur ....
Ach die lieben HTML Zeichen... ein Fall für den Webmaster
l:13 : s:^1234567890▀▀ l:127 : s:Um Windows OneCare Live zu installieren, ben÷tigt man einen Rechner mi t englischem Windows XP und installiertem Service Pack 2. l:2 : s:Nu l:14 : s:Ú↑+ÀA²↓<ÕEß]←‗ l:73 : s:ß¶<§SÓ♦*ÒE■↑y┐I²▬5ÔS·♂<Àw·‼=°WÓ]☼■Sþ∟pÀO¸↑+Às÷☼/■C÷] ÷C°♫yE¹↑7ÀL÷↑+À Aµ♫w l:37 : s:Zudem lõsst sich das Programm nur ins l:9 : s:‗◄5■Eß↑7╗ l:19 : s:÷◄5ÔN¶↑7ÀW÷☼=‗N│↑+õ l:4 : s:│►0Ò l:0 : s:
-
Ich weiss es ist spät ^^
Keiner der sagen kann, wie man besser und sicherer eine Zeichenkette "verschlüsselt" und so das es korrekt gespeichert wird ohne gelesen/decodiert werden kann? Puh, und ich dachte schon ich bin der Einzige der das nicht hinbekommt