Share via


Codeanalyse der Dienstprogrammklassen (CNG-Beispiel)

Die Datei Utilities.cs im CNG-Beispiel (Cryptography Next Generation) für sichere Kommunikation enthält anwendungsweite Steuerungsflags und Methoden, die von den Projekten Alice, Bob und Mallory verwendet werden.Diese Flags und Methoden werden in den folgenden Abschnitten erläutert:

  • Die Flags "Version", "FVerbose" und "FMallory"

  • Autoloader-Methode

  • InitConsole-Methode

  • SplashScreen-Methode

  • ReadALine-Methode und ReadAChar-Methode

  • InitializeOptions-Methode

  • Anzeigemethoden

Eine Übersicht des Beispiels finden Sie unter Beispiel für sichere Cryptography Next Generation (CNG)-Kommunikation.

Die Flags "Version", "FVerbose" und "FMallory"

  • Version: Ein ganzzahliger Wert, der festlegt, welches Sicherheitsmodell veranschaulicht wird, wie in der folgenden Tabelle definiert.

    Version

    Sicherheitsmodell

    1

    Keine Verschlüsselung (Klartext-Nachrichten).

    2

    Verschlüsselte Nachrichten.

    3

    Nicht sichere, digitale Signaturen, die mit kryptografischen Schlüsseln und verschlüsselten Nachrichten verwendet werden.

    4

    Sichere, digitale Signaturen, die mit kryptografischen Schlüsseln und verschlüsselten Nachrichten verwendet werden.

    5

    Programmabbruch aufgrund von Sicherheitsfehlern.

  • fVerbose: Ein boolescher Wert zur Steuerung der Ausgabedaten.Mit dem Wert true werden alle Nachrichten in ASCII und im verschlüsselten Format angezeigt.Mit dem Wert false werden Nachrichten nur im ASCII-Format angezeigt.

  • fMallory: Ein boolescher Wert, der steuert, ob das Mallory-Projekt aktiviert ist.Mit dem Wert true wird das Beispiel mit Mallory ausgeführt.Mit dem Wert false wird das Beispiel ohne das Abfangen von Mallory ausgeführt.Sie können dieses Flag für eine praktische Vorher-/Nachher-Analyse eines Man-in-the-middle-Angriffs verwenden.

Autoloader-Methode

static bool Autoloader()

Mit dieser Methode werden Bob.exe und Mallory.exe geladen.Sie wird von Alice zu Beginn ihrer Main-Methode aufgerufen.

Der Autoloader erkennt, ob Alice als eigenständige Anwendung oder durch Visual Studio geladen wurde.Dies geschieht durch den Aufruf der Process.GetProcessesByName(String)-Methode, um eine Process-Komponente abzurufen, die dem Prozess Alice.exe zugeordnet ist.

  • Wenn vom Autoloader eine Process-Komponente abgerufen wird, ist Alice eine eigenständige Anwendung.Alice startet Bob.exe und Mallory.exe, indem sie die Process.Start(String)-Methode für Bob und Mallory aufruft.Eine Ausnahme wird ausgelöst, wenn Bob.exe oder Mallory.exe nicht gefunden wird.

  • Wenn der Autoloader keine Process-Komponente abruft, bedeutet dies, dass Alice.exe von Visual Studio geladen wurde.In diesem Fall müssen Bob.exe und Mallory.exe manuell ausgeführt werden, indem sie in zwei separate Instanzen des Visual Studio-Debuggers geladen werden.

Unter Gewusst wie: Erstellen und Ausführen des CNG-Beispiels finden Sie weitere Informationen über den Autoloader.

InitConsole-Methode

static void InitConsole(string name, int left, int top)

Diese Methode akzeptiert eine Zeichenfolge und zwei ganze Zahlen.Mit der Zeichenfolge wird das Konsolenfenster betitelt.Die ganzen Zahlen stellen die Standardkoordinaten für den linken oberen Pixel dar, bei dem das Konsolenfenster auf dem Bildschirm positioniert wird.

Jedes Fenster wird den Standardkoordinaten entsprechend positioniert.Das Fenster von Alice wird in der linken oberen Ecke des Bildschirms positioniert.Das Fenster von Bob wird in der rechten oberen Ecke des Bildschirms positioniert.Das Fenster von Mallory wird unter den Fenstern von Alice und Bobs positioniert.

Zwei Plattformaufrufdeklarationen bieten Zugriff auf die nicht verwalteten Win32-Funktionen MoveWindow und GetConsoleWindow, von denen die eigentliche Positionierung durchgeführt wird.

SplashScreen-Methode

static void SplashScreen()

Diese Methode löscht die Konsole und stellt Titel für die Fenster von Alice, Bob und Mallory bereit.

ReadALine-Methode und ReadAChar-Methode

static string ReadALine(bool fBlankOkay)
static string ReadAChar(string options)

Diese kleinen Dienstprogrammmethoden umschließen zusammen die Console.ReadLine-Aufrufe.

ReadALine akzeptiert einen booleschen Wert.Wenn der Wert true ist und der Benutzer die EINGABETASTE drückt, wird ReadALine zurückgegeben.Wenn der Wert false ist, wird ReadALine erst zurückgegeben, wenn der Benutzer mindestens ein Zeichen eingibt und dann die EINGABETASTE drückt.

ReadAChar akzeptiert eine Zeichenfolge und wird zurückgegeben, wenn der Benutzer eines der in der Zeichenfolge enthaltenen Zeichen eingibt.

InitializeOptions-Methode

static string InitializeOptions()

Diese Methode stellt ein Menü zum Einstellen der zuvor in diesem Thema beschriebenen Flags Version, fVerbose und fMallory bereitAußerdem kann der Benutzer den Wert "x" auswählen, um die Anwendung zu schließen.

Anzeigemethoden

Die Datei Utilities.cs stellt zwei Display-Methoden bereit:

  • static void Display(string s)

    Diese Methode übergibt die zugehörige Zeichenfolge und den aktuellen MyColor-Parameter an die zweite Display-Methodenüberladung.

  • static void Display(string DisplayString, int color)

    Diese Methode umschließt Console.WriteLine-Aufrufe und stellt eine farbcodierte Ausgabe bereit.Durch die Verwendung von Farben kann der Besitzer der jeweiligen Nachricht leichter zurückverfolgt werden.Zum Beispiel werden die Nachrichten von Alice in allen drei Fenstern grün angezeigt.In der folgenden Tabelle sind die im Beispiel verwendeten Farben und ihre Bedeutung aufgeführt.

ID

Farbe

Verwendung

0

Rot

Sicherheitsfehlermeldungen.

1

Gelb

Optionenmenü und Anwendungsmeldungen.

2

Weiß

Nachrichten von Bob.

3

Zyan

Benutzereingabe.

4

Grün

Nachrichten von Alice.

5

Violett

Nachrichten von Mallory.

6

Gelb

Aufforderung zum Neustart der Anwendung.

7

Grau

Verschlüsselte Nachrichtendaten.

Siehe auch

Referenz

Console

ConsoleColor

Konzepte

Beispiel für sichere Cryptography Next Generation (CNG)-Kommunikation

Utilities.cs-Quellcode (CNG-Beispiel)

Quellcodeübersicht (CNG-Beispiel)

Weitere Ressourcen

Marshallen von Daten mit Plattformaufruf