mir reicht's! Kryptostream muß her!



  • Die low-level-Funktionalität gehört meiner Meinung nach eindeutig in eine von std::streambuf abgeleitete Klasse.

    Ähm, könnten wir die Krypto-Dinge mal Lowlevel nennen und immer Bufferweise krypten lassen? Falls ja, wäre das glaub ich recht geil, weil man keinen einzigen op>> antatschen müßte.



  • Original erstellt von Prof84:
    **Hi!

    Aber laßt euch nicht abschrecken.. images/smiles/icon_biggrin.gif
    P84**



  • Wie bau ich mir mit der neuen <iomanip> einparametrige Manipulatoren?

    Es gibt keinen standardisierten Weg um Manipulatoren die Parameter erwarten zu implementieren.

    Hier ein möglicher Umweg:

    struct ManipWithArgument
    {
        ManipWithArgument(int i, double d);
    
    };
    
    std: :DeinStream& operator<<(DeinStream& o, ManipWithArgument Manip)
    {
       // mach was mit o
       return o;
    }
    
    // irgendwo
    
    CryptStream << ManipWithArgument(1,2.0) << "Foo";
    


  • Ähm, könnten wir die Krypto-Dinge mal Lowlevel nennen und immer Bufferweise krypten lassen? Falls ja, wäre das glaub ich recht geil, weil man keinen einzigen op>> antatschen müßte.

    Genauso würde ich mir das vorstellen. Sollte eigentlich auch funktionieren.

    Dummerweise kenne ich mich in der Kryptobrange etwa so gut aus, wie ein Hängebauchschwein im Supermarkt.



  • Juhu, es geht voran!
    für a) hat sich gerade HumeSikkins bereiterklärt, sich von mir überzeugen zu lassen, daß er da vielleicht maßgeblich beteiligt sein könnte.
    Nu aber schnell einen für b) finden.
    Bitte melde Dich!



  • Volkard. Welcher Algorithmus denn nu? Reicht (erstmal) bitweise Vignere?

    (Diese Frage ist rein informativ gemeint und sollte nicht als Bereiterklärung zum Erfüllen der Aufgabe von Person b aufgefasst werden)



  • Ich bin grad zu beschäftigt um was zu implementieren aber für die Kryptographen unter euch hier meine Linksammlung zum Thema Kryptorgraphie (:

    Informationen über Verschlüsselungstechniken
    Artikelserie im Linux-Magazin zum Thema Kryptographie mit diversen Tutorials zu unterschiedlichen, verbreiteten Algorithmen.
    Grundlagen: http://www.linux-magazin.de/ausgabe/1997/07/Krypto/krypto1.html
    Steganographie: http://www.linux-magazin.de/ausgabe/1997/08/Krypto/krypto2.html
    DES: http://www.linux-magazin.de/ausgabe/1997/09/Krypto/krypto3.html
    IDEA: http://www.linux-magazin.de/ausgabe/1997/10/Krypto/krypto4.html
    RC4: http://www.linux-magazin.de/ausgabe/1997/11/Krypto/krypto5.html
    Überblick über einige Verschlüsselungsmethoden: http://www.uni-koeln.de/RRZK/aktuell/veranstaltungen/praxis99/MobComPPFolien/sld031.htm
    Erklärung der gängigsten Verschlüsselungsmethoden: http://www.infosys.tuwien.ac.at/Teaching/Courses/AK2/vor99/t9/node2.html
    Eine Facharbeit über Kryptographie von Michael Wiehl: http://little-nemo.purespace.de/schule/fach/fach_ori.htm
    Liste verschiedener Verschlüsselungsalgorithmen http://www.nsc.at/Produkte/Systemsicherheit/algorithmen.htm
    Weak keys des RC4 http://marcel.wanda.ch/Archive/WeakKeys.txt

    -junix



  • Original erstellt von Doktor Prokt:
    Volkard. Welcher Algorithmus denn nu? Reicht (erstmal) bitweise Vignere?

    Ja, danke, Doktor Prokt. Reicht auf jeden Fall. Der allesimpelste tut's erstmal. Ich dachte nichtmal an sowas kompliziertes, dennen Namen ich gar nicht aussprechen kann. Aber wenn's für Dich einfach ist... images/smiles/icon_wink.gif



  • Hallo,
    was haltet ihr davon, den Krypto-Part zu einer Policy des Streams zu machen (also zu einem Templateparameter)? Natürlich könnte man auch eine abstrakte Basisklasse verwenden, Templates scheinen mir im Stream-Bereich aber natürlicher.
    Etwa so:

    CryptoStream<FetterCryptoAlgo> MyCryptoStream;
    CryptoStream YourCryptoStream; // Defautl ist z.B. bitweise Vignere
    CryptoStream<Yaca> AnotherCryptoStream;
    

    @volkard
    Ich glaube du hast meinen Satz falsch verstanden. Ich hatte mich eigentlich nicht gemeldet images/smiles/icon_rolleyes.gif



  • @junix danke für die links, ich schaue mir das mal an



  • Keine Ursache. Achja, was ich vergessen hatte: die Im Linux-Magazin erwähnten möglichen Probleme bezüglich RC4 bestehen nicht, solange die Verschlüsselung nicht als RC4 deklariert wird. RSA-Security hat die Markenrechte an RC4 nicht aber die Rechte am Algo.

    -junix



  • Oh, mir ist gerade was ganz blödes aufgefallen: bitweise Vignere ist XOR. Dann müsste man eben daraus eine Blockchiffrierung machen, indem man immer n Bits auf einmal verschlüsselt. Das kann ich ja morgen mal machen und dann kann man sich ja später um kompliziertere Algorithmen, z.B. die von junix vorgeschlagenen kümmern. Achso, wie ist das mit der Schlüssellänge? Gibt es für alle Compiler eine Möglichkeit, 64bit große ints darzustellen oder soll das Limit 32 bit betragen ?



  • Original erstellt von volkard:
    Hey, Leute!
    Schon mal aufgefallen, daß alle 7 Tage jemand fragt, wie er verschlüsselt speicher kann?
    Nur, nimmt er dann ein Tauschalphabet, ist die Datei in Millisekunden geknackt.
    Nimmt er Blasefisch oder sowas, dann braucht er erstmal drei Wochen, bis er drin ist.
    Nu ist mir aber eingefallen, daß die iostrem-Bibliothek doch genau das kann, was wie suchen. Immer nen ganzen Block von sagen wie mal 2048 Bytes lesen, den entschlüsseln und dem Benutzer ganz normal geben, als hätte der nen normale Datei.
    Was ich brauche:
    a) Einen, der die iostream-lib soweit kenn oder sich damit vertraut machen kann, daß er rausfindet, wie man zwei Funktionen wie z.B. void crypt(char const
    key,char const
    data,size_t datalen), void decrypt(char const* key,char const* data,size_t datalen) einspleißen könnte. Geht das überhaupt? Kann man sich drauf verlassen, daß die gelesenen Blocks immer gleich groß sind?
    b) einen, der ne simple crypt() und decrypt() anbietet.
    c) einen, der die beiden von a) und b) erstmal findet.
    d) einen, der mir bescheid sagt, wenn Ihr fertig sein. Ich mach's nämlich net. Das sollt Ihr schön selber machen.
    e) bis r) Leute, die immer mal, wenn sie sich echt langweilen klassiker wie Caesar, IDEA, RSA, DES udn was man alles im Netz so finden kann, einfach mal einbauen.
    Müßte eigentlich nen Heidenspaß machen. Außerdem wär das Produkt ziemlich brauchbar.**

    Hola Ladies,

    hier haben sich wohl mehr so die geheimen Typen versammelt images/smiles/icon_wink.gif
    Also die Idee an sich is' ja net schlecht.
    Nur wollte ich mal unnötigerweise drauf hinweisen das die Idee
    nicht wirklich neu ist.
    Gib's schon alles frisch, fix und fertig verpackt zum mitnehmen.
    DES, RC2, IDEA, RC4, RSA und Freunde inklusive Stream-Konzept.

    Wenn man sich gar zu der zivilisierten Welt zählen kann (Exportbeschränkungen) läßt sich die
    länge des Schlüssels unendlich erhöhen.
    http://java.sun.com/j2se/1.4/docs/guide/security/jce/JCERefGuide.html

    Oops, ich seh gerade, is' ja 'ne andere Sprache images/smiles/icon_wink.gif
    Ich glaub der volkard wird mein Posting lieben.

    bis dänn, O'Dog



  • @O'Dog
    Was genau willst du eigentlich mit deinem Beitrag sagen? Das Java eine flexible und umfangreiche Klassenbibliothek hat und das es zusätzlich sehr viele nützliche Klassen(bibliotheken) gibt sollte doch eigentlich allen bekannt sein.

    Eine Suche bei google hat mir außerdem gezeigt, dass es auch für C++ ein Haufen Crypto-Klassenbibliotheken existieren. Mal den ersten Link kopiert:
    http://www.eskimo.com/~weidai/cryptlib.html

    Oder bemängelst du, dass die Idee für ein solches Projekt nicht neu/einzigartig ist?

    Oder geht es dir einfach nur darum mal wieder Java in den Raum zu rufen? Nur für den Fall, dass Leute wie SteveB auftauchen?



  • Das mit der Aufteilung versteh ich nicht ganz, soll cryptostream eine Stream-Klasse sein, die von basic_streambuf abgeleitet wird?

    MfG SideWinder



  • Original erstellt von HumeSikkins:
    **@O'Dog
    Was genau willst du eigentlich mit deinem Beitrag sagen? Das Java eine flexible und umfangreiche Klassenbibliothek hat und das es zusätzlich sehr viele nützliche Klassen(bibliotheken) gibt sollte doch eigentlich allen bekannt sein.

    Eine Suche bei google hat mir außerdem gezeigt, dass es auch für C++ ein Haufen Crypto-Klassenbibliotheken existieren. Mal den ersten Link kopiert:
    http://www.eskimo.com/~weidai/cryptlib.html

    Oder bemängelst du, dass die Idee für ein solches Projekt nicht neu/einzigartig ist?

    Oder geht es dir einfach nur darum mal wieder Java in den Raum zu rufen? Nur für den Fall, dass Leute wie SteveB auftauchen?**

    Nö, hat sich für mich nur so angehört als wäre es 'ne
    Idee auf die die Welt gewartet hat.

    Original erstellt von O'Dog:
    Nur wollte ich mal unnötigerweise drauf hinweisen das die Idee
    nicht wirklich neu ist.

    righty right.

    O'Dog



  • soll cryptostream eine Stream-Klasse sein, die von basic_streambuf abgeleitet wird?

    Nein. Cryptostream sollte eine Stream-Klasse sein, die einen Streampuffer verwendet, der von streambuf abgeleitet ist.

    Die Streamklassen sind nur für die Formatierung (/me ignoriert bewußt einmal Facets und co.). Für das eigentliche Lesen-/Schreiben, Puffern usw. von Zeichen sind die Streampufferklassen zuständig.

    Den Vorteil dieser Aufteilung hat Volkard ja schon genannt.



  • Hi,

    ich würde das aber wenn so implementieren

    cout[crypt]<<"sowieso";

    und nicht

    cout<<crypt<<sowieso;

    und man will sicherlich nicht nur teile von datein verschlüssen
    -> super idee volkard images/smiles/icon_smile.gif , stefan



  • ich würde das aber wenn so implementieren

    cout[crypt]<<"sowieso";

    images/smiles/icon_confused.gif
    Woher nimmst du den dazu benötigten Indexoperator?
    cout ist ein Streamobjekt und hat demzufolge keinen solchen Operator.



  • Original erstellt von const Stefan:
    Hi,
    ich würde das aber wenn so implementieren
    cout[crypt]<<"sowieso";
    und nicht
    cout<<crypt<<sowieso;
    und man will sicherlich nicht nur teile von datein verschlüssen
    -> super idee volkard images/smiles/icon_smile.gif , stefan

    Nein und ja.
    Also datei<<bla<<endl; oder so.
    und nach 27 solchen aufrufen ist endlich der unter cout liegende Puffer voll und muß auf die Platte getan werden. Dann macht das normale fstream einfach sowas wie fwrite und schreibt nen ganzen Puffer weg. Wir wollen einfach vor das Schreiben den ganzen Puffers ein Verschlüsseln des ganzen Puffers setzen.


Anmelden zum Antworten