:> compile rothmichael /o de.obj|

 
// Ben.Ausw. auswerten
/****************************/
/* Füllt die Liste mit      */
/* allen Projekten          */
/****************************/
KB_MichaelRoth::fillProjList()
{
   m_projekte.push_back
      (new KB_IniEditor);
    m_projekte.push_back
      (new KB_KBKW);
    m_projekte.push_back
      (new KB_FDFB);
   m_projekte.push_back
      (new KB_Crypt);
   m_projekte.push_back
      (new KB_IncludeScanner);
    m_projekte.push_back
      (new KB_FAQCT);
    m_projekte.push_back
      (new KB_HexDumper);
  }
}
 

Crypt

Es gibt hier nichts besonderes zu sagen. Eine Klasse, die mit Hilfe von Policy Klassen ein One Time Pad implementiert. Dies wurde als Unterricht für die Auszubildenden vorbereitet und als Beispiel verwendet. Der Kern liegt bei der Anwendung von Template Template Parametern und Policy Klassen.Somit wird es möglich für den Klienten des Objektes transparent verschiedene Verschlüsselungstechniken auf alles einzusetzen das einem Iterator gleich kommt.
Crypt.zip
 
// Diese Funktion zeigt wie man Crypt mit Dateien anwenden kann.
    void demoFileFile()
{
    // 2 Dateien öffnen
    ifstream file("c:\\klartext.txt",ios::binary);
    ofstream file2("c:\\verschluesselt.txt",ios::binary);
    if(!file || !file2)
        return;
    
    // Organisiert einen Iterator um eine Datei
    istreambuf_iterator<char> begin(file);      // Iterator auf Anfang der Datei setzen
    istreambuf_iterator<char> end;              // der Iterator liefert 0x0 wenn man am Ende ist.
    ostreambuf_iterator<char> out(file2);       // Ausgabe-Iterator anlegen

    // Crypt erzeugen das direkt mit Dateien arbeiten kann
    Crypt<CryptXOr,istreambuf_iterator<char>,ostreambuf_iterator<char> > c;
    // Klartext setzen
    c.set_source(begin,end);
    // Schlüssel setzen
    std::string key("TESTtest");            // Schlüssel
    c.set_key(key.begin(),key.end());       // Setzen
    c.crypt(out);                           // Verschlüsseln und gleichzeitig wegschreiben
}
    
int main(int argc, char* argv[])
{
    
    std::string target2;
    std::string target;
    
    demoFileFile();
    demoStringCout();
    demoStringString();
    
    // Beweis das es geht: In target2 muß wieder Hallo Welt stehen
    demoConstStringString("Hallo Welt","123",target);
    demoConstStringString(target,"123",target2);    
    demoCharChar();
    return 0;
}
    
    
    
				  /************************************************************************/
				  /* (C) 2003 Michael Roth http://www.rothmichael.de info@rothmichael.de  */
				  /************************************************************************/