Share via


유틸리티 클래스의 코드 분석(CNG 예제)

업데이트: 2008년 7월

CNG(Cryptography Next Generation) 보안 통신 예제의 Utilities.cs 파일에서는 Alice, Bob 및 Mallory 프로젝트에서 사용하는 응용 프로그램 수준 제어 플래그와 메서드를 제공합니다. 다음 단원에서 이러한 플래그와 메서드에 대해 설명합니다.

  • Version, fVerbose 및 fMallory 플래그

  • Autoloader 메서드

  • InitConsole 메서드

  • SplashScreen 메서드

  • ReadALine 및 ReadAChar 메서드

  • InitializeOptions 메서드

  • Display 메서드

예제에 대한 개요는 CNG(Cryptography Next Generation) 보안 통신 예제를 참조하십시오.

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 메서드가 시작될 때 이 메서드를 호출합니다.

자동 로더에서는 Alice가 독립 실행형 응용 프로그램으로 로드되었는지 아니면 Visual Studio에서 로드되었는지를 확인합니다. 이를 위해 Process.GetProcessesByName(String) 메서드를 호출하여 Alice.exe 프로세스에 연결된 Process 구성 요소를 가져옵니다.

  • 자동 로더에서 Process 구성 요소를 가져온 경우 Alice는 독립 실행형 응용 프로그램입니다. Alice는 Bob 및 Mallory에 대해 Process.Start(String) 메서드를 호출하여 Bob.exe 및 Mallory.exe를 시작합니다. Bob.exe 또는 Mallory.exe를 찾을 수 없으면 예외가 throw됩니다.

  • 자동 로더에서 Process 구성 요소를 가져올 수 없는 경우 Visual Studio에서 Alice.exe를 로드한 것입니다. 이 경우에는 Visual Studio 디버거의 개별 인스턴스 두 개에서 Bob.exe 및 Mallory.exe를 로드하여 직접 실행해야 합니다.

자동 로더에 대한 자세한 내용은 방법: CNG 예제 빌드 및 실행을 참조하십시오.

InitConsole 메서드

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

이 메서드는 문자열 하나와 두 정수를 받습니다. 문자열은 콘솔 창의 제목으로 사용되고, 정수는 화면에서 콘솔 창을 배치할 왼쪽 및 위쪽 기본 픽셀 좌표를 나타냅니다.

각 창은 기본 좌표에 따라 배치됩니다. Alice의 창은 화면의 왼쪽 위 모퉁이에 배치됩니다. Bob의 창은 화면의 오른쪽 위 모퉁이에 배치됩니다. Mallory의 창은 Alice 및 Bob의 창 아래쪽에 배치됩니다.

두 플랫폼 호출 선언을 통해 실제로 배치를 수행하는 관리되지 않는 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이면 사용자가 문자를 최소한 하나 이상 입력한 다음 Enter 키를 눌러야 ReadALine이 반환됩니다.

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

회색

암호화된 메시지 데이터

참고 항목

개념

CNG(Cryptography Next Generation) 보안 통신 예제

Utilities.cs 소스 코드(CNG 예제)

소스 코드 개요(CNG 예제)

참조

Console

ConsoleColor

기타 리소스

플랫폼 호출을 사용하여 데이터 마샬링

변경 기록

날짜

변경 내용

이유

2008년 7월

항목이 추가되었습니다.

향상된 기능 관련 정보