Wie verschlüsselt man einen String



  • 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