Verschlüsselung



  • Hi,

    ich suche eine Verschlüsselung mit der ich Text Ver- und Entschlüsseln kann. Es handelt sich wirklich nur um Text, ich brauche also keine Datein verschlüsseln.
    Könnt ihr mir was sicheres empfehlen? Am besten wäre, wenn ich nur eine Datei einbinden müsste und die Funktionne sofort nutzen kann. Vielen Dank

    Gruß



  • AES ist leicht implementiert, da gibts sicher auch fertige Libs für.

    Du solltest aber wenigstens sagen was für ein Typ von Verschlüsselung du benötigst, denn es gibt verschiedene Verfahren die verschiedene Zwecke gebraucht werden können. Falls du keine Ahnung davon hast schreib doch einfach was du machen willst.



  • Hm, bei Text, die nicht uebermaessig gross sind, duerfte doch Vernam/One-Time-Pad ganz brauchbar sein, schnell einfach, reversibel aber dennoch sicher...



  • Oder nimm die "eingebaute" Verschlüsselung XOR

    verschl[v] = text[t] ^ passwort[p];
    


  • also ich kann dir rsa empfehlen... is nich mehr patentiert und absolut sicher, sofern du großgenuge zahlen verarbeiten kannst 😉

    is auch ganz einfach zu implementieren, hab da maln programm geschrieben wegen seminarkurs... allerdings mit java XD



  • Hi,

    danke für eure Antworten, ich glaube RSA ist für meine Zwecke in Ordnung. Aber jetzt stellt sich die Frage, wo kriege ich die nötigen Datein her? Ich wollte mir das nicht selber schreiben dzu hab ich vom Thema Verschlüsselung zu wenig Ahnung.

    Mir reichts, wenn so was geht:

    // P S E U D O    C O D E
    int main ( void )
    {
      std::string MeinText = "Der soll verschlüsselt werden";
      std::string MeinTextVerschluesselt = Verschluessenl( MeinText....);
      Entschluesseln( MeinTextVerschluesselt... );
    }
    

    Ich brauche also nur 2 Funktionen, mehr brauche ich nicht.



  • dann ist wohl rsa nicht so geeignet 😉 denn da musst du dir ja zunächst einen schlüssel generieren und den public key weiter geben etc pp. für so etwas solltest du möglicherweise tatsächlich besser eine symmetrische verschlüsselung wie einfach XOR nehmen, das dürfte dir reichen. für rsa ist das programm dann etwas komplexer...

    Gruß, Hunger



  • Hi,
    also der Text wird danach übers Netzwerk übertragen, daher halte ich etwas mehr als nur XOR für sehr sinnvoll, mir fehlt eben nur die passende Funtion... 😞



  • wozu benötigst du denn eine komplexe verschlüsselung?
    wenn du was asymmetrisches willst nimm eben RSA XD aber da musste dich schon n bissl mehr damit beschäftigen mit generierung der schlüssel zb. außerdem brauchst du, damit es wirklich sicher ist locker 1024-bit schlüssel, sonst hat man das ganze sehr schnell wieder entschlüsselt... d.h. du brauchst große zahlen (in java hab ich BigInteger genommen, vllt gibts so was auch für c++)

    gruß, Hunger



  • DaHunger schrieb:

    in java hab ich BigInteger genommen, vllt gibts so was auch für c++

    http://de.wikipedia.org/wiki/GNU_Multiple_Precision_Arithmetic_Library



  • siehste XD



  • Ich würde dir empfehlen die Verschlüsselung nicht selbst zu implementieren (außer du machst das aus Interesse und nicht für ein reales Projekt), da man leicht Fehler einbaut etc. Es gibt zahlreiche Bibliotheken für C und C++, zB die libgcrypt (aus dem GnuPG-Projekt) oder Crypto++. Ansonsten existieren für die meisten Verschlüsselungs-Algorithmen Referenz-Implementierungen, die du nutzen könntest.

    Wenn du mehr über Kryptographie erfahren willst, wirst du um das Standard-Werk wohl nicht herum kommen
    Applied cryptography | ISBN: 0471128457

    Nachtwind schrieb:

    Hm, bei Text, die nicht uebermaessig gross sind, duerfte doch Vernam/One-Time-Pad ganz brauchbar sein, schnell einfach, reversibel aber dennoch sicher...

    Hört doch bitte mit One-Time-Pad auf!



  • also von one-time-pad halt ich auch nicht wirklich viel,
    asymmetrische verschlüsselung ist im moment eigentlich wirklich das one and only also würd ich von da was nehmen kryptologie is ein sau interessantes thema ich kann dazu von simon singh geheime botschaften empfehlen, ein sehr gutes buch mit lesbaren formulierungen 😉 nur musste zu anwendung dazu dann weiter rein gehn für rsa musste ich viele websites besuchen um rauszufinden wie es tatsächlich funktioniert XD, kann dir da aber auch n paar infos geben wenn des willst,
    hab da so ne 120-Seiten-Seminararbeit... 😉

    Gruß, Hunger



  • Dann mal her damit, mich interessierts.



  • die ganze arbeit ? 😃



  • Was deiner Meinung nach nützlich ist um RSA zu implementieren.

    Ich kann auch Java soweit lesen 😉



  • hi,
    wenn es "nur" darum geht ascii Text zu verschlüsseln und das ganze etwas sicherer als xor sein soll, dann könnte die
    Random-Verschlüsselung ganz nützlich sein.

    Hier ein kleines Programm mit eingebautem (Primitiv) Randomgenerator, das die Randomverschlüsselung demonstriert:

    unsigned long lehmer(long int s)
    // Lineare Kongruenzmethode nach Lehmer
    {   static unsigned long a = 1, b = 4194301, c = 2147483647, z = b;
        if ( s < 0 ) { s = - s; b = s;}
        z = (a + b * z) % c;
        return z % s;
    }
    void chiffre ( long int seed, long int range, int n, string text, long int secret[])
    {   lehmer(-seed);
        if ( range > 0 )
          for (int i = 0; i < n; i++)  secret[i] = (int)text[i] + lehmer(range);
            else for (int i = 0; i < n; i++) text[i] = (char)(secret[i] - lehmer(range));
    }
    int main(int argc, char *argv[])
    {
       string text ="Where ignorance is bliss tis' folly to be wise";
       long int secret[100]; int n = text.length();
    
       // Parameter der Verschlüsselung setzen.
       // Seed und range müssen bei Sender und Empfänger identisch gleich sein.
       long int seed  = 314159265;   // Startwert für Zufallszahlenfolge
       long int range = 589793238;   // Zufallszahl aus Bereich 0..589793237
    
       cout << "Text:        " << text << endl;
    
       // Verschlüsselung
       chiffre ( seed, range, n, text, secret );
       cout << "Chiffriert:  ";
       for (int i = 0; i < n; i++) cout << secret[i] << " "; cout << endl;
    
       // Entschlüsselung
       chiffre ( seed, -range, n, text, secret );
       cout << "Dechiffriert: " << text << endl;
       return 0;
    }
    /*
    Text:        Where ignorance is bliss tis' folly to be wise
    Chiffriert:  
    517769730 147894922 18997234 206732853 183685324 121854227 
    400230142 159977991 311798117 195928414 188643095 311630247 
    332237088 193986841 361992925 149589485 449360302 582087321 
    175106033 309136939 68084118  150041065 537987766 367341035 
    07007728  241769222 41325606  495252861 505901981 185416513 
    379386708 336848968 480284029 87910431  155469837 550220938 
    353622729 42787025 354251736 331149278 387177826 85549929  
    165687031 117352297 25176161  586173098
    Dechiffriert: Where ignorance is bliss tis' folly to be wise
    */
    


  • rüdiger schrieb:

    ... oder Crypto++ ...

    👍
    http://www.cryptopp.com/



  • DaHunger schrieb:

    ...
    asymmetrische verschlüsselung ist im moment eigentlich wirklich das one and only ...

    Sorry, aber das kann ich so nicht stehen lassen. "Asymmetrische Kryptographie" ist erstmal keine Qualitätsaussage, sondern eine Kategorie kryptographischer Algorithmen nach einer bestimmten Eigenschaft ! Ich kann Dir auch eine "asymmetrische Verschlüsselung" programmieren, die absolut unsicher ist...

    Wenn Du eine aufwendige Schlüsselverteilprblematik zui lösen hast, empfehle ich auch asymmetrische Algorithmen ... andernfalls (vA bei performancekritischen Anwendungen) kann man prima (und pftmals besser) symmetrische verwenden.

    Gruß,

    Simon2.




Anmelden zum Antworten