Share via


公用程式類別的程式碼分析 (CNG 範例)

Cryptography Next Generation (CNG) 安全通訊範例中的 Utilities.cs 檔案提供 Alice、Bob 和 Mallory 專案所使用的應用程式層級控制旗標和方法。下列章節將討論這些旗標和方法:

  • Version、fVerbose 和 fMallory 旗標

  • Autoloader 方法

  • InitConsole 方法

  • SplashScreen 方法

  • ReadALine 和 ReadAChar 方法

  • InitializeOptions 方法

  • Display 方法

如需範例的概觀,請參閱 Cryptography Next Generation (CNG) 安全通訊範例

Version、fVerbose 和 fMallory 旗標

  • Version:決定要示範哪個安全性模型的整數值,如下表所定義。

    版本

    安全性模型

    1

    不使用加密 (純文字訊息)。

    2

    加密訊息。

    3

    搭配使用密碼編譯金鑰和加密訊息的不安全數位簽章。

    4

    搭配使用密碼編譯金鑰和加密訊息的安全數位簽章。

    5

    程式在發生安全性錯誤時終止。

  • fVerbose:控制顯示輸出的布林值。true 值會以 ASCII 和加密格式顯示所有訊息。false 值則只會以 ASCII 格式顯示訊息。

  • fMallory:控制是否啟用 Mallory 專案的布林值。true 值表示會以 Mallory 執行範例。false 值則會在沒有 Mallory 攔截的情況下執行範例。使用此旗標可以方便地進行攔截式攻擊的前後分析。

Autoloader 方法

static bool Autoloader()

此方法會載入 Bob.exe 和 Mallory.exe。這會由 Alice 在其 Main 方法的開頭呼叫。

Autoloader 會偵測 Alice 是當做獨立應用程式載入,或由 Visual Studio 載入。它是藉由呼叫 Process.GetProcessesByName(String) 方法,取得與 Alice.exe 處理序相關聯的 Process 元件的方式來偵測。

  • 如果 Autoloader 取得 Process 元件,Alice 就是獨立應用程式。Alice 會藉由呼叫 Bob 和 Mallory 的 Process.Start(String) 方法來啟動 Bob.exe 和 Mallory.exe。如果找不到 Bob.exe 或 Mallory.exe,就會擲回例外狀況 (Exception)。

  • 如果 Autoloader 未取得 Process 元件,表示 Alice.exe 是由 Visual Studio 載入。在這種情況下,您必須使用兩個不同的 Visual Studio 偵錯工具執行個體 (Instance) 來載入 Bob.exe 和 Mallory.exe,以手動執行這兩個檔案。

如需 Autoloader 的詳細資訊,請參閱 HOW TO:建置和執行 CNG 範例

InitConsole 方法

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

這個方法會接受一個字串和兩個整數。字串是用來加註主控台視窗的標題。整數則表示主控台視窗在螢幕上的預設左邊和上方像素座標。

每個視窗都會根據預設座標定位。Alice 的視窗定位在螢幕的左上角。Bob 的視窗定位在螢幕的右上角。Mallory 的視窗則定位在 Alice 和 Bob 的視窗下方。

兩個平台叫用宣告會提供 Unmanaged Win32 函式 MoveWindowGetConsoleWindow 的存取權,這兩個函式會執行實際的定位。

SplashScreen 方法

static void SplashScreen()

這個方法會清除主控台並提供 Alice、Bob 和 Mallory 視窗的標題。

ReadALine 和 ReadAChar 方法

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

這些小型公用程式方法會一起運作,以將 Console.ReadLine 呼叫換行。

ReadALine 接受布林值。如果值為 true,則當使用者按下 ENTER 鍵時,ReadALine 會傳回。如果值為 false,則 ReadALine 會等到使用者至少輸入一個字元再按下 ENTER 鍵後才會傳回。

ReadAChar 接受字元字串,並且會在使用者輸入字串的其中一個字元時傳回。

InitializeOptions 方法

static string InitializeOptions()

這個方法會提供您功能表,以設定本主題前面所述的 Version、fVerbose 和 fMallory 旗標。此外,使用者可以選取 "x" 值來關閉應用程式。

Display 方法

Utilities.cs 檔案提供兩個 Display 方法:

  • static void Display(string s)

    這個方法會傳遞其字串和目前的 MyColor 參數給第二個 Display 方法多載。

  • static void Display(string DisplayString, int color)

    這個方法會將 Console.WriteLine 呼叫換行並提供色彩編碼輸出。使用色彩可讓您更容易追蹤每個訊息的擁有者。例如,Alice 的訊息在三個視窗中都會以綠色顯示。下表列出本範例使用的色彩及其意義。

ID

色彩

請使用

0

紅色

安全性錯誤訊息。

1

黃色

[選項] 功能表和應用程式訊息。

2

白色

Bob 的訊息。

3

青色

使用者輸入。

4

綠色

Alice 的訊息。

5

紫色

Mallory 的訊息。

6

黃色

應用程式重新啟動提示。

7

灰色

加密訊息資料。

請參閱

參考

Console

ConsoleColor

概念

Cryptography Next Generation (CNG) 安全通訊範例

Utilities.cs 原始程式碼 (CNG 範例)

原始程式碼概觀 (CNG 範例)

其他資源

使用平台叫用封送處理資料