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°♫y­E¹↑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 🙄


Anmelden zum Antworten