XOR Verschlüsselung; Grenzen?



  • SeppJ schrieb:

    edit2: Ungetestet (ich bin ehrlich gesagt betrunken):

    for (char c; input.get(c); inputStr.push_back(i)); // Ja, mit Semikolon am Ende
    

    Das sollte doch

    inputStr.push_back(c)
    

    heißen, oder? Wo soll das i denn herkommen? 🙂


  • Mod

    Ja, c. i war Gewohnheit.



  • So, es funktioniert jetzt! Ich bedanke mich bei euch.

    Für alle die sich interessieren, hier nochmal der Code:

    std::string inputStr = "";
    
    	std::ifstream input("test.dat", std::ios::binary);
    	{
    		seppjs_super_duper_codierender_streambuf foo(input, 't');
    
    		for (char c; input.get(c); inputStr.push_back(c)); // Ja, mit Semikolon am Ende
    	}
    	input.close();
    
    	std::cout << inputStr;
    
    	std::ofstream output("test.dat", std::ios::binary);
    
    	output << inputStr;
    
    	output.close();
    

    Edit: Ich finde das so deutlich lesbarer als die anderen Vorschläge...



  • kralo9 schrieb:

    ich hab da eine Frage: Wo liegen die Grenzen der xor Verschlüsselung? Also ich meine damit, ob auch wirklich alle Zeichen damit codiert werden können.

    viel spannender ist doch die frage nach der sicherheit. und so wie es scheint, gibt es zzt. keine sichere implementation, mit ausreichend sicheren schlüsseln.

    afaik wird zzt. für kritische anwendungen aes256 im cbc mode verwendet.



  • Wenn du dir mal den thread http://www.c-plusplus.net/forum/305435-10 durchliest, dann weißt du auch, warum ich "nur" xor verschlüssel.



  • So, ich hab den ganzen überflüssungen C90/C99/C++ Flamewar mal rausgeschnitten und auf den Müll verschoben, führt eh zu nichts. Sollte ich versehentlich sinnvolle Beiträge mit entsorgt haben, tuts mir leid.



  • Meine Template-Version hätteste stehen lassen können 😉



  • meine schöne c-funktion auch.



  • Kellerautomat schrieb:

    Meine Template-Version hätteste stehen lassen können 😉

    Sry, reiche ich nach:

    Kellerautomat schrieb:

    template <typename BufferForwardIterator, typename KeyForwardIterator>
    void keller_xor(BufferForwardIterator bufbegin, BufferForwardIterator bufend, KeyForwardIterator keybegin, KeyForwardIterator keyend)
    {
        for(auto keyiter = keybegin; bufbegin != bufend, ++bufbegin, ++keyiter)
        {
            if(keyiter == keyend)
                keyiter = keybegin;
    
            *bufbegin ^= *keyiter;
        }
    }
    

    b.b. schrieb:

    meine schöne c-funktion auch.

    Die mit dem du den ganzen Flamewar erst provoziert hast? Ich denke nicht.



  • hier im forum c code zu posten, bedeutet für dich also flamewar provozieren.
    und ja, ich habe auf abfällige bemerkungen entsprechend reagiert, warum sollte ich mir das auch gefallen lassen.



  • b.b. schrieb:

    hier im forum c code zu posten, bedeutet für dich also flamewar provozieren.
    und ja, ich habe auf abfällige bemerkungen entsprechend reagiert, warum sollte ich mir das auch gefallen lassen.

    Reiner C-Code ist hier off-topic. Gewisse Kommentare dazu wie "c ist sowieso viel besser" sind reine Provokation. Brauchen wir auch nicht weiter zu diskutieren, zurück zum Thema.

    /edit: ich hebs nochmal hervor...



  • pumuckl schrieb:

    Reiner C-Code ist hier off-topic.

    stimmt, ich finde es ist höchste zeit, c++ und c zu trennen, lange genug hieß es c/c++ und das alles nur, weil c++ ein extern "C" erlaubt!

    so, damit bin ich als reiner c'ler mal weg ➡


Anmelden zum Antworten