mir reicht's! Kryptostream muß her!
-
Original erstellt von Dimah:
soll ich nach Doktor Prokt vorlage den crc32 algo schreiben? wolltet ihr nicht iteratoren?void Vigenere::encipher(char* start,char* end) { encipher(start,end-start); }
[ Dieser Beitrag wurde am 17.04.2002 um 23:14 Uhr von volkard editiert. ]
-
Original erstellt von Dimah:
soll ich nach Doktor Prokt vorlage den crc32 algo schreiben?Jetzt wären erstmal die Stream-Sachen dran. Denn klappen die nicht, können wir das Projekt erstmal wegschmeißen.
-
Original erstellt von volkard: void Vigenere::encipher(char* start,char* end) { encipher(start,end-start); }
hä? rekrisiv und dan noch pointer mit einander verrächnen (undefieniertes verhalten)
was soll das bringen?e: kein beitrag ohne edit images/smiles/icon_smile.gif
[ Dieser Beitrag wurde am 17.04.2002 um 23:28 Uhr von Dimah editiert. ]
-
die
void Vigenere::encipher(char*,char*)
ruft die
void Vigenere::encipher(char*,size_t)
auf.end-start==len, wenn start+len==end
-
ok wieder was zu gelernt
aber wie ich es in erinerung habe ist pointer mit pointer nicht erlaubt
wenn schon dan reinterpret_cast in ints,[ Dieser Beitrag wurde am 17.04.2002 um 23:43 Uhr von Dimah editiert. ]
-
Mit strlen geht das IMHO nicht, da diese Funktion bei einer \0 aufhört zu zählen. Wenn du jetzt binäre Daten hast wo eine \0 vorkommt, wird nicht alles verschlüsselt. Ich glaube die Länge muss auf jeden Fall übergeben werden!
-
aber wie ich es in erinerung habe ist pointer mit pointer nicht erlaubt
Ich glaube da hast du was falsches in Erinnerung.
-
Mein Compiler birtet mir speziell für die Differenz von Zeigern sogar nen eigegenen Typen an:
ptrdiff_t
-
ok, ich lag falsch
jetz habe ich noch mal nachgekuckt, das addieren von zwei zeigern ist verboten, da habe ich wohl was duch einander gebracht[ Dieser Beitrag wurde am 18.04.2002 um 00:04 Uhr von Dimah editiert. ]
-
so ich hab auch mal was geschrieben, basiert zwar nur auf der Caesar Chifre (also einer monoalphabetischen Substitution) ist ja auch nur zur Demo
#include <iostream> #include <cstring> using namespace std; namespace crypto { class out_crypto_caesar { private: int key; ostream& out; public: out_crypto_caesar(int ckey,ostream& to):key(ckey),out(to) { } out_crypto_caesar& operator<<(const char*str) { for(size_t i=0;*(str+i)!=0;++i) out << (char)(*(str+i)+key); return *this; } }; } using namespace crypto; int main() { char*d1="hallo"; out_crypto_caesar ccout(1,cout); ccout << d1; cout << endl; }
-
Wer übernimmt Part c) ?
-
Hallo,
ich habe jetzt mal einen CryptOStream implementiert.
Eine Anwendung sähe so aus:int main() { CryptoStream<Caeser> MyStream("KryptoTest.txt", ios: :out, Caeser('a')); MyStream << "Dieser Satz wird verschlüsselt" << endl; MyStream << "Schlüssel ist: " << 'a' << " als int: " << int('a') << endl; return 0; }
Bisher basiert das ganze noch auf basic_filebuf und ist demzufolge nicht sehr performant (doppelt Pufferung usw.).
Schneller wäre es, wenn der Puffer von basic_streambuf abgeleitet wäre und sich selbst um das Filehandling kümmern würde.
So war's aber erstmal weniger arbeit images/smiles/icon_wink.gif
Wenn interesse besteht, würde ich den Code schnell hochladen. Ich denke für's Forum ist er etwas zu lang und unübersichtlich.
-
Ob Interesse besteht? Nein, ich hab das Projekt eigentlich ins Leben gerufen, um Euch zu veralbern.
Nicht optimal performant im Moment? Völlig egal. Es geht. Und wie ich Dich kenne, haste gleich alles richtig gemacht, Heißt, daß optimale Lösung genau gleich anzuwenden sein wird wie diese. Dann isses ja egal, wie die ganz innen drin implementiert ist. Den Schritten d) bis z) steht dann nichts mehr im Wege.
-
Hallo,
hier der Link: ...Noch ein paar Hinweise:
Da ich das ganze nur mit dem VC entwickelt habe, wird es wahrscheinlich auch nur mit dem funktionieren. Der gcc kennt z.B. keine char_traits. Es fehlen also auf jeden Fall noch ein paar #ifdefs usw.Die Parameterreihenfolge von CryptoStream ist derzeit etwas unglücklich.
Der Code ist noch sehr Alpha images/smiles/icon_smile.gif
[ Dieser Beitrag wurde am 19.04.2002 um 04:34 Uhr von HumeSikkins editiert. ]
-
Hmm, jetzt ist die Phase wo ich mal was lernen kann - werd ich mir sofort anschauen deinen CryptoStream.
MfG SideWinder
-
@Side
Jetzt hast wenigstens schon mal gelernt, wie man es nicht machen sollte images/smiles/icon_smile.gifDamit das allen anderen erspart bleibt, habe ich die Datei erstmal wieder gelöscht. Sobald eine neue Version fertig ist, sage ich bescheid.
-
faulheit zahlt sich manchmal aus, ich war gestern zu faul mir dein code anzuckuen images/smiles/icon_smile.gif
-
Na dann, warten wir mal auf deine neue Version images/smiles/icon_wink.gif.
MfG SideWinder
-
@Side und Dimah
Keine Angst, die erste Version war auch nicht ganz falsch. Ich habe da nur den Puffer nicht richtig genutzt. Insofern war sie wenig effizient.Ich habe jetzt mal die neue Version hochgeladen, die Lesen und Schreiben in Ansätzen unterstützt und den Puffer wesentlich effizienter einsetzt (genauer gesagt setzt sie diesen jetzt richtig ein). Allerdings fehlen da noch ne riesen Menge Sachen (steht auch den Kommentaren).
Da ich aber in der nächsten Zeit aus studiumtechnischen Gründen nur wenig Zeit habe, gebe ich euch lieber jetzt schon mal die halbfertige Version. Vielleicht kann der ein oder andere von euch ja anhand des Codes die fehlenden Teilstücke einbauen.
Der Link ist wieder: http://fara.cs.uni-potsdam.de/~kaufmann/CryptoStream.h
@Volkard
Kannst du noch mal auflisten, was du alles haben wolltest.
Ich kann mich leider nicht mehr an alles erinnern images/smiles/icon_sad.gif
-
Na dann, schau ich mir das mal an - und Gnade dir Gott ich finde einen Fehler images/smiles/icon_wink.gif.
MfG SideWinder