다음을 통해 공유


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

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

회색

암호화된 메시지 데이터

참고 항목

참조

Console

ConsoleColor

개념

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

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

소스 코드 개요(CNG 예제)

기타 리소스

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