Verschlüsselung



  • 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.





  • @simon2{
    tut mir echt leid, dass du des nich so stehen lassen kannst.
    aber die am besten anzuwendenden verfahren findet man ganz einfach in diesem bereich,
    und damit ist dieser bereich der, in dem man suchen muss wenn man was braucht.
    damit ist er das one and only.
    }



  • DaHunger schrieb:

    ...aber die am besten anzuwendenden verfahren findet man ganz einfach in diesem bereich,...

    "Besser anzuwenden" ist für Dich ein Kriterium für "the one and only" ? Dann müsste Onetimepad ja das Beste vom Besten sein.... (nichts ist einfacher) 😉

    Dass Du das so wahrnimmst, kann nur an Deinem eingeschränkten Sichtfeld liegen. Schau Dir mal an, welche Algorithmen bei Chipkartentransaktionen in der überwiegenden Mehrheit angewandt werden: Symmetrische ! Warum ? Weil sie "besser anzuwenden sind" ... und weil man in diesem Umfeld die Vorteile asymmetrischer Kryptographie (Keymanagement) nicht braucht - wohl aber die der symmetrischen (geringer CPU- und Memoryverbrauch). Und für Verschlüsselung (sprich "Geheimhaltung von Daten") sind symmetrische Verfahren viiiel weiter verbreitet als asymmetrische. Bisweilen wird ein "asymmetrisches Verteilverfahren für symm. Sessionkeys" angehängt, aber der Sicherungsmechanismus der Daten ist weiterhin symmetrisch.
    Bei der "Authentikation" sind asymmetrische Verfahren dagegen wirklich oft die bessere Wahl (wenn sie denn technisch möglich ist).

    Hier gilt wie überall in der Programmierung: Das beste Werkzeug ist das bestpassende ! (und hängt damit stark vom Anwendungszweck ab)

    Ich will gar nicht RSA&Co schlechtmachen, aber wer sich freiwillig Scheuklappen aufsetzt, kann nicht mit meiner Zustimmung rechnen. (Hierbei verwende ich "Scheuklappen" übrigens in seiner ursprünglichen Bedeutung "Absichtliches Ignorieren von Alternativen" ... nicht in seiner (leider immer wieder auftauchenden) pejorativen Form "Du bist blöd und ich schlau" !)

    Andersherum wird IMO ein Schuh draus: Wer "Verschlüsseln" will, sollte sich auch bei asymmetrischen Verfahren umsehen ... aber nicht ausschließlich.

    Gruß,

    Simon2.



  • das problem bei asymmetrischen verfahren ist ja ganz eindeutig dass sie zu langsam sind. wenn er aber einen text verschlüsselen möchte ihn übers netz übertragen(sicher) und dort wieder entschlüsseln will dann ist das wohl die deutlich bessere variante, bzw in ähnlicher kombination wie das pgp tut: erst den schlüssel für ein symmetrisches verfahren mit zb rsa verschlüsseln den übertragen und mit dem schlüssel den eigentlichen text verschlüsseln und den mitübertragen. wenn er dem schlüsselaustausch problem aus dem weg gehen will geht der weg unweigerlich über asymmetrische verschlüsselung. ansonsten tuts auch die symmetrische. one-time-pad ist absolut nicht am einfachsten anzuwenden für seinen fall, denn er muss den schlüssel ja irgendwie JEDES MAL (one-time eben) für jeden text wieder analog damit sich zum andren pc transportieren.

    unterschiedliche sichtweisen=endlose diskussion und am ende macht beides (keinen) sinn also is des thema für mich hiermit beendet.

    gruß, Hunger



  • DaHunger schrieb:

    ...unterschiedliche sichtweisen...

    Mal abgesehen davon, dass ich nicht wüsste, wann man überhaupt duskutieren sollte, wenn nicht dann, wenn man unterschiedliche Sichtweisen hat:
    Deiner Darstellung stimme ich voll und ganz zu !

    Ich habe mich lediglich gegen die Vereinfachung gewandt und darauf hinweisen wollen, dass für Verschlüsselung (so gut wie) immer (auch) symmetrische Verfahren verwendet werden.
    Deswegen würde ich sagen: Einigkeit=>Diskussion beendet.

    Gruß,

    Simon2.


Anmelden zum Antworten