如何:生成并运行 CNG 示例

更新: 2008 年 7 月

本主题讲述下一代加密技术 (CNG) 安全通信示例的文件结构,并说明如何生成并运行此示例。

为了生成 CNG 示例,您创建三个控制台可执行文件。您同时运行这些可执行文件,以查看此交互式复合示例。

此 CNG 示例是用 C# 编写的。它要求使用 Visual Studio 2008 或更高版本。

生成示例

此 CNG 示例由三个 Visual Studio 项目组成:

  • Alice

  • Bob

  • Mallory

该示例包含六个文件,可以从以下主题查看和复制这些文件:

每个项目都有其自己的 .cs 文件(Alice.cs、Bob.cs 和 Mallory.cs),该文件包含特定于项目的代码。这三个项目共享 Utilities.cs、ChannelManager.cs 和 Communicator.cs 文件。这三个文件直接添加到 Alice 项目,并间接(通过文件链接)添加到 Bob 和 Mallory 项目。

生成 Alice、Bob 和 Mallory 项目

  1. 启动 Visual Studio。

  2. 在“文件”菜单上,指向“新建”,再单击“项目”。

    将显示“新建项目”对话框。

  3. 在“项目类型”窗格中,单击“Visual C#”。

  4. 在“模板”窗格中单击“控制台应用程序”。

  5. 在“名称”框中键入 Alice。

  6. 在“位置”框中输入存储 Alice 项目的位置。

  7. 单击“确定”。

  8. Alice 源代码复制到名为 Alice.cs 的文件,并将该文件保存到 Alice 项目目录。收到提示后,请确认您希望替换默认的 Alice.cs 文件。

  9. ChannelManagerCommunicatorUtilities 源代码分别复制到名为 ChannelManager.cs、Communicator.cs 和 Utilities.cs 的文件中,并将这些文件保存到 Alice 项目目录。按照如下所述将这三个文件添加到 Alice 项目:

    1. 在“视图”菜单上单击“解决方案资源管理器”。

    2. 在“解决方案资源管理器”窗口中,右击“Alice”文件夹,指向“添加”,然后单击“现有项”。

      将显示“添加现有项”对话框和 Alice 项目目录。

    3. 选择 ChannelManager.cs、Communicator.cs 和 Utilities.cs 文件,然后单击“添加”。

  10. 对 Bob 和 Mallory 项目重复步骤 2-8。请确保将 Bob 源代码保存到 Bob 项目目录,将 Mallory 源代码保存到 Mallory 项目目录。

  11. 对 Bob 和 Mallory 项目重复步骤 9。但是,在步骤 9.c 中,不是单击“添加”,而是单击“添加”按钮旁边的箭头,然后单击“添加为链接”。

  12. 按照如下所述设置 Bob 和 Mallory 项目的输出目录:

    1. 在“项目”菜单上单击“属性”,然后单击“生成”选项卡。

    2. 将输出路径设置为 Alice 项目使用的生成位置。该位置很可能是在步骤 6 中选择的 Alice 项目目录中的 \bin\Debug\。

  13. 若要生成各个项目,请在“生成”菜单上单击“生成解决方案”。

  14. 请确认所有项目均成功生成,且可执行文件 Alice.exe、Bob.exe 和 Mallory.exe 存在于 Alice 项目目录中。

运行示例

此示例可以从 Visual Studio 运行,也可以作为独立的应用程序运行。这些方法产生完全相同的输出。

运行 CNG 示例

  1. 若要从 Visual Studio 运行此示例,请双击这三个项目的 .sln 文件,即 Alice.sln、Bob.sln 和 Mallory.sln,以打开三个 Visual Studio 实例。在 Alice 项目中,在“调试”菜单上单击“开始调试”。对 Bob 和 Mallory 项目重复此操作。

    - 或 -

    若要将此示例作为独立的应用程序运行,请将全部三个项目的可执行文件 (.exe) 复制到一个目录中。在 Windows 资源管理器中双击 Alice.exe。Alice 将通过其内置的自动加载程序调用 Bob 和 Mallory 可执行文件。

    说明:

    也可以从控制台窗口运行 Alice 可执行文件,方法是转到包含这三个可执行文件的目录,并在命令行上输入 alice.exe

    运行这三个可执行文件时,将显示三个控制台窗口。窗口标题反映项目名称,窗口的大小和位置已经过调整,以便于您在 1280 x 1024 显示器上看到消息流。您可以移动这些控制台窗口并重新调整它们的大小以实现最佳显示。

  2. 在 Alice 窗口中,当提示选择安全版本时,请键入 1 到 5 之间的某个数。如果是第一次进行测试,请键入 1。

    这些数字分别对应于 CNG 示例概述中讨论的五个软件版本。

  3. 版本 2 到 5 将询问您是否需要详细输出。如果采用常规模式,请输入 n;如果采用详细模式,请输入 y。

    • 常规模式下仅显示纯文本消息。

    • 详细模式下会显示纯文本消息、数字签名密钥、加密密钥、初始化向量、密码文本和数字签名。

  4. 当询问是否要禁用 Mallory 时,请键入 n 表示否定,或者键入 y 表示肯定。

    如果禁用 Mallory,他将不会接收任何消息并将保持空闲状态。Alice 和 Bob 将在没有 Mallory 截获的情况下进行通信。

  5. 理解 Alice 和 Bob 之间的脚本对话。

    对话的详细信息取决于在步骤 2 中选择的版本号。每个窗口都会创建一个发送和接收模式交替的消息循环。发送模式由 :> 提示符指示。接收模式由一个空行指示。如果 Alice 处于发送模式,Bob 将处于接收模式。Bob 接收消息后,即会切换到发送模式,而 Alice 将切换到接收模式。

    仔细查看 Alice 和 Bob 的消息。Alice 发送给 Bob 的第二条消息和 Bob 对 Alice 的答复已被 Mallory 更改。

    脚本对话结束后,Alice 将询问您是否要与 Bob 对话。

  6. 如果您想要发送自己的消息,请在提示符处:

    1. 键入消息,然后按 Enter。Alice 将发送此消息给 Bob。

    2. 将焦点设置到 Bob 窗口,在其中键入一条消息,然后按 Enter。Bob 将发送此消息给 Alice。

    3. 重复前面两个步骤来发送其他消息。

  7. 如果要退出,请在 Alice 或 Bob 的窗口处于发送模式(由 :> 提示符指示)时在其中按 Enter。

    三个窗口将重置为它们在步骤 2 中所处的状态。

    说明:

    如果单击“关闭”按钮来关闭某个窗口,这些窗口可能会停止响应。您将不得不关闭所有打开的窗口,然后重新启动此示例。

  8. 使用不同的选项运行此示例。如果选择详细模式和版本 2、3、4 或 5,则可以比较 Alice 发送的加密字符串和 Bob 接收的加密字符串。除非启用了 Mallory,否则它们应完全匹配。但请注意,ASCII 字符集中大于 128 的字符由于无法显示,而由问号 (?) 表示。

请参见

概念

下一代加密技术 (CNG) 安全通信示例

加密概述

修订记录

日期

修订记录

原因

2008 年 7 月

新增主题。

信息补充。