HOW TO:建置和執行 CNG 範例
本主題描述 Cryptography Next Generation (CNG) 安全通訊範例的檔案架構,並說明如何建置和執行該範例。
若要建置 CNG 範例,您要建立 3 個主控台可執行檔。您可以同時執行這些可執行檔,以了解這個互動式的複合範例。
CNG 範例是以 C# 撰寫的,需要 Visual Studio 2008 (含) 以後版本。
建置範例
CNG 範例包含 3 個 Visual Studio 專案:
Alice
Bob
Mallory
這個範例包含 6 個檔案,您可以從下列主題進行檢視和複製:
每個專案所擁有的專屬 .cs 檔案 (Alice.cs、Bob.cs 和 Mallory.cs) 中包含專案專用的程式碼。這 3 個專案會共用 Utilities.cs、ChannelManager.cs 和 Communicator.cs 檔案。後面 3 個檔案是直接加入在 Alice 專案中,並 (透過檔案連結) 間接加入 Bob 和 Mallory 專案。
若要建置 Alice、Bob 和 Mallory 專案
啟動 Visual Studio。
在 [檔案] 功能表上,指向 [新增],然後按一下 [專案]。
[新增專案] 對話方塊隨即出現。
按一下 [專案類型] 窗格中的 [Visual C#]。
按一下 [範本] 窗格中的 [主控台應用程式]。
在 [名稱] 方塊中,輸入 Alice。
在 [位置] 方塊中,輸入您想要儲存 Alice 專案的位置。
按一下 [確定]。
複製 Alice 原始程式碼到名為 Alice.cs 的檔案中,並儲存在 Alice 專案目錄中。在收到提示時,確認您要取代預設的 Alice.cs 檔案。
將 ChannelManager、Communicator 和 Utilities 原始程式碼複製到名為 ChannelManager.cs、Communicator.cs 和 Utilities.cs 的個別檔案中,並儲存在 Alice 專案目錄中。遵循下列步驟,將這 3 個檔案加入至 Alice 專案:
按一下 [檢視] 功能表上的 [方案總管]。
以滑鼠右鍵按一下 [方案總管] 視窗中的 [Alice] 資料夾,指向 [加入],然後按一下 [現有項目]。
[加入現有項目] 對話方塊隨即開啟,並顯示 Alice 專案目錄。
選取 ChannelManager.cs、Communicator.cs 和 Utilities.cs 檔案,然後再按一下 [加入]。
針對 Bob 和 Mallory 專案重複步驟 2-8。確認是將 Bob 原始程式碼儲存至 Bob 專案目錄,並將 Mallory 原始程式碼儲存至 Mallory 專案目錄。
針對 Bob 和 Mallory 專案重複步驟 9。但是在步驟 9.c 中,不要按 [ 加入],而是按一下 [加入] 按鈕旁的箭號,然後再按一下 [加入做為連結]。
遵循下列步驟,設定 Bob 和 Mallory 專案的輸出目錄:
按一下 [專案] 功能表中的 [屬性],然後按一下 [建置] 索引標籤。
將輸出路徑設為 Alice 專案所使用的組建位置。這個位置或許是步驟 6 所選取的 Alice 專案目錄中的 \bin\Debug\。
若要建置每個專案,按一下 [建置] 功能表上的 [建置方案]。
確認所有專案的建置都沒有錯誤,以及 Alice 專案目錄中是否存在有可執行檔 Alice.exe、Bob.exe 和 Mallory.exe。
執行範例
您可以從 Visual Studio 執行範例,或是將範例做為獨立應用程式執行。這些方法會產生相同的輸出。
若要執行 CNG 範例
若要從 Visual Studio 執行,按兩下這 3 個專案的 .sln 檔案 Alice.sln、Bob.sln 和 Mallory.sln,開啟 3 個 Visual Studio 執行個體。在 Alice 專案中,按一下 [偵錯] 功能表上的 [開始偵錯]。針對 Bob 和 Mallory 專案重複進行。
-或-
若要將範例做為獨立應用程式執行,將這 3 個專案的可執行檔 (.exe) 複製到單一目錄。按兩下 Windows 檔案總管中的 Alice.exe。Alice 會透過內建的自動載入器呼叫 Bob 和 Mallory 可執行檔。
注意事項 您也可以藉由在命令列巡覽到包含這 3 個可執行檔的目錄並輸入 alice.exe,即可從主控台視窗執行 Alice 可執行檔。
執行這 3 個可執行檔時,會出現 3 個主控台視窗。視窗的標題會反映專案名稱,且會調整好這些視窗的大小和位置,讓您可以在 1280 x 1024 監視器上輕鬆瀏覽訊息流動。您可以移動主控台視窗或調整其大小,以達到最佳顯示效果。
當 Alice 視窗中出現安全性版本的提示時,輸入 1 到 5 之間的數字。對於第一個測試,請輸入 1。
這些數字對應到 CNG 範例概觀中討論的 5 個軟體版本。
版本 2 到 5 會提示您指示是否要提供詳細資訊輸出。輸入 n 表示一般模式,或輸入 y 表示詳細資訊模式。
一般模式只會顯示純文字訊息。
詳細資訊模式則會顯示純文字訊息、數位簽章金鑰、密碼編譯金鑰、初始化向量、密碼文字和數位簽章。
在出現提示詢問您是否要停用 Mallory 時,輸入 n 表示不要,或輸入 y 表示要停用。
如果停用 Mallory,該視窗就不會收到任何訊息並保持在閒置狀態。Alice 和 Bob 會繼續通訊,而不會被 Mallory 攔截訊息。
繼續看 Alice 和 Bob 間的腳本對談。
對談的詳細內容是由步驟 2 所選取的版本號碼決定。每個視窗建立的訊息迴圈會在傳送和接收模式間輪流交換。傳送模式是以 :> 提示符號表示。接收模式是以空白行表示。當 Alice 處於傳送模式時,Bob 就在接收模式。當 Bob 收到訊息時,就會切換為傳送模式,而 Alice 就切換到接收模式。
仔細留意 Alice 和 Bob 的訊息。Alice 傳給 Bob 的第二個訊息和 Bob 給 Alice 的回覆,已經由 Mallory 變更過。
在腳本對談結束後,Alice 會詢問您是否要與 Bob 交談。
如果您想要傳送自己的訊息,請在提示符號處:
輸入訊息並按 ENTER。Alice 會將該訊息傳送給 Bob。
將焦點設在 [Bob] 視窗,輸入訊息並按 ENTER。Bob 會將該訊息傳送給 Alice。
重複前兩個步驟,以傳送其他訊息。
當您想要結束時,在 [Alice] 或 [Bob] 視窗處於傳送模式 (以 :> 提示符號表示) 時按 ENTER。
這 3 個視窗就會重設為步驟 2 中的狀態。
注意事項 如果您藉由按下 [關閉] 按鈕關閉視窗,則這些視窗會停止回應。您必須關閉任何開啟中的視窗,再重新啟動範例。
使用不同的選項執行範例。如果選取詳細資訊模式和版本 2、3、4 或 5,您可以比較 Alice 傳送的加密字串和 Bob 收到的加密字串。在沒有啟用 Mallory 的情況下,這些字串應該是完全相符的。不過請注意,在 ASCII 字元集中超過 128 的字元,會因為無法顯示而以問號表示 (?)。