Wie verschlüsselt man einen String



  • OK , tut mir leid wen ich mich falsch ausgedrückt habe , war nicht beabsichtigt.
    Kanst du mir vieleicht trotzdem antworten ,is ja Weinachten? :xmas1:



  • (*******) schrieb:

    Erstmal weis ich nicht was ein Zweierkomplement ist , erklär bitte mal.

    Beim Komplement wird jedes Bit eines Zeichens durch sein Gegenteil ausgetauscht (btw, das da oben ist das Einerkomplement). Also wird aus einer 1 eine 0 und umgekehrt (und aus 00110100(b) wird 11001011(b)).

    Wasfür Algorytmen gibt es ? Ist damit gemeint wiviel bit Verschlüsselung? 🙄

    Da gibt es viel mehr als du dir vorstellen kannst, angefangen bei Cäsar-Chiffre (verschiebt jeden Buchstaben um drei Stellen im Alphabet: A wird D, B wird E,...) und Scytale (vertauscht bestimmte Buchstaben des Wortes miteinander) bis hin zu RSA (Modulo-Rechnungen mit riesigen Primzahlen - praktisch kaum zu knacken).

    Erstmal ist mir nur wichtig das der Text von keinem Menschen mehr gelesen werden kan, aber erklär das andere trotzdem mal, vieleicht versteh ichs ja! 😃

    In dem Fall reicht wohl etwas einfacheres, z.B. die obige Komplement-Darstellung.

    (dein Quell funktionirt nicht 5 unerklärliche Fehler?!?)

    Wenn du dazuschreibst, was für Fehler, kann dir auch geholfen werden (könnte aber daran liegen, daß du einige Header vergessen hast).



  • Denke erst mal
    Ich hab alles kapiert bis auf das mit dem Zweierkomplement (ich weiß ich bin dumm) 1 und 0 geht ja noch aber was ist z.B. mit 'G' oder '?' oder auch '5442114' ?
    Köntest du mir bitte bitte mal ein Beispiel schreiben? , wäre echt nett 🙂



  • na bei einem computer ist alles binär aufgebaut!

    Auch ein "G" interpretiert der computer als eine reihe von 0en und 1en, und für das "G" werden dann eben die 0 und 1 getauscht, und somit entsteht ein ganz anderes zeichen!



  • Ganz einfach: Ein Zeichen wie 'G' wird intern auch als Bitfolge dargestellt, also kannst du jedes Bit einzeln umkehren:
    'G' = 71 = 0100 0111(b) => 1011 1000(b) = 184 = '¸' (irgendein Sonderzeichen des erweiterten Zeichensatzes)



  • OK , Danke das hab ich jetzt kapiert aber wie man das macht noch nicht.
    Ne kurze Erklärung währe super! 😃



  • (*******) schrieb:

    OK , Danke das hab ich jetzt kapiert aber wie man das macht noch nicht.

    Was hast du jetzt kapiert und was nicht?

    Wie gesagt: Der ~-Operator bildet für builtins das Zweierkomplement. Wie das vonstatten geht, siehe CStolls Post oder aber auch einfach mal in der wikipdia.

    Dazu mal ein kompilierbares Minimalbeispiel:

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main()
    {
        string s("Hallo Welt!"); // Original String...
    
        for(size_t i = 0, end = s.length(); i < end; ++i)
            s[i] = ~s[i]; // Das 2-Komplement von s[i] bilden.
    
        cout << "\ns = " << s << endl; // der "verschlüsselte" string...
    
        for(size_t i = 0, end = s.length(); i < end; ++i)
            s[i] = ~s[i]; // Nochmal das 2-Komplement von s[i] bilden. Jetzt enthält  s[i] wieder den Ursprungswert.
    
        cout << "s = " << s << endl; // der ursprungs string...    
    }
    

    Gruß Caipi



  • (*******) schrieb:

    OK , Danke das hab ich jetzt kapiert aber wie man das macht noch nicht.
    Ne kurze Erklärung währe super! 😃

    Schau Dir mal mein Postiung in diesen Thread an. Da ist erklärt wie das geht, was Du vorhast.

    :xmas2: Werner



  • Hallo,
    das sind aber alles unsichere Verfahren.

    Ein sicheres Verfahren wäre z.B. xTEA:

    http://en.wikipedia.org/wiki/XTEA

    Dabei wandelt man einen 8-Zeichen langen Text so in 2 Integer/Long-Variablen um:
    v[0] = ch[0]+(ch[1]<<8)+(ch[2]<<16)+(ch[3]<<24);
    v[1] = ch[4]+(ch[5]<<8)+(ch[6]<<16)+(ch[7]<<24);

    Der Key (k) ist ein Long-Array, mit 4 Long-Zahlen, kann ebenfalls wie oben aus einem String berechnet werden.



  • Caipi schrieb:

    Wie gesagt: Der ~-Operator bildet für builtins das Zweierkomplement.

    Einerkomplement - mach dir mal den Unterschied klar 😉 (z.B. unter Wikipedia



  • CStoll schrieb:

    Caipi schrieb:

    Wie gesagt: Der ~-Operator bildet für builtins das Zweierkomplement.

    Einerkomplement - mach dir mal den Unterschied klar 😉 (z.B. unter Wikipedia

    Der Unterschied ist mir klar. Keine Ahnung, wieso ich desshalb (bisher) angenommen habe, dass der NOT-Operator (Der Name sagt ja eigentlich schon alles...) das Zweierkomplement bildet. 😮.

    Danke für die Berichtigung!

    Gruß Caipi



  • warum den nicht einfach mit XOR?

    sicherer als das zweierkomp. und doch ganz leicht


Anmelden zum Antworten