Análisis de código de las clases de utilidad (Ejemplo CNG)

El archivo Utilities.cs del ejemplo de comunicación segura de criptografía de próxima generación (CNG) proporciona métodos y marcadores de control en el nivel de la aplicación que se utilizan en los proyectos Alice, Bob y Mallory.Estos marcadores y métodos se explican en las secciones siguientes:

  • Marcadores Version, fVerbose y fMallory

  • Método Autoloader

  • Método InitConsole

  • Método SplashScreen

  • Métodos ReadALine y ReadAChar

  • Método InitializeOptions

  • Métodos Display

Para obtener información general sobre el ejemplo, vea Ejemplo de comunicación segura de criptografía de próxima generación (CNG).

Marcadores Version, fVerbose y fMallory

  • Version: valor entero que determina el modelo de seguridad que se muestra, tal y como se define en la tabla siguiente.

    Version

    Modelo de seguridad

    1

    Sin cifrado (mensajes de texto simple).

    2

    Mensajes cifrados.

    3

    Firmas digitales no seguras utilizadas con claves criptográficas y mensajes cifrados.

    4

    Firmas digitales seguras utilizadas con claves criptográficas y mensajes cifrados.

    5

    Finalización del programa tras un error de seguridad.

  • fVerbose: valor booleano que controla el resultado de la presentación.El valor true muestra todos los mensajes con formato ASCII y los mensajes cifrados.El valor false muestra los mensajes solo con el formato ASCII.

  • fMallory: valor booleano que controla si el proyecto Mallory está habilitado.El valor true ejecuta el ejemplo con Mallory.El valor false ejecuta el ejemplo sin la interceptación de Mallory.Puede utilizar este marcador para realizar el análisis correspondiente antes y después de producirse un ataque de tipo "Man in the middle".

Método Autoloader

static bool Autoloader()

Este método carga Bob.exe y Mallory.exe.Alice lo llama al comienzo de su método Main.

El cargador automático detecta si Alice se cargó como una aplicación independiente o a través de Visual Studio.Para ello, llama al método Process.GetProcessesByName(String) a fin de obtener un componente Process que esté asociado al proceso de Alice.exe.

  • Si el cargador automático obtiene un componente Process, Alice es una aplicación independiente.Alice inicia Bob.exe y Mallory.exe llamando al método Process.Start(String) para Bob y Mallory.Se produce una excepción si no se encuentra Bob.exe o Mallory.exe.

  • Si el cargador automático no obtiene un componente Process, significa que Alice.exe se cargó a través de Visual Studio.En este caso, deberá ejecutar manualmente Bob.exe y Mallory.exe cargándolos con dos instancias independientes del depurador de Visual Studio.

Para obtener más información sobre el cargador automático, vea Cómo: Generar y ejecutar el ejemplo CNG.

Método InitConsole

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

Este método acepta una cadena y dos enteros.la cadena se utiliza para asignar un título a la ventana de la consola.Los enteros representan las coordenadas izquierda y superior predeterminadas, en píxeles, de la pantalla en las que se va a situar la ventana de la consola.

Cada ventana se coloca según las coordenadas predeterminadas.La ventana de Alice se coloca en la esquina superior izquierda de la pantalla.La ventana de Bob se sitúa en la esquina superior derecha de la pantalla.La ventana de Mallory se sitúa bajo las ventanas de Alice y Bob.

Dos declaraciones de invocación de plataforma proporcionan acceso las funciones de Win32 MoveWindow y GetConsoleWindow, que llevan a cabo el posicionamiento real.

Método SplashScreen

static void SplashScreen()

Este método limpia la consola y proporciona los títulos de las ventanas de Alice, Bob y Mallory.

Métodos ReadALine y ReadAChar

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

Estos pequeños métodos de utilidad trabajan juntos para contener las llamadas a Console.ReadLine.

ReadALine acepta un valor booleano.Si el valor es true, ReadALine devuelve si el usuario presionó la tecla ENTRAR.Si el valor es false, ReadALine no devolverá datos hasta que el usuario escriba al menos un carácter y, a continuación, presione la tecla ENTRAR.

ReadAChar acepta una cadena de caracteres y devuelve datos cuando el usuario escribe uno de los caracteres de la cadena.

Método InitializeOptions

static string InitializeOptions()

Este método proporciona un menú en el que puede establecer los marcadores Version, fVerbose y fMallory descritos previamente en este tema.Además, el usuario puede seleccionar el valor "x" para cerrar la aplicación.

Métodos Display

El archivo Utilities.cs proporciona dos métodos Display:

  • static void Display(string s)

    Este método pasa su cadena y el parámetro MyColor actual a la segunda sobrecarga del método Display.

  • static void Display(string DisplayString, int color)

    Este método contiene las llamadas a Console.WriteLine y proporciona los resultados codificados mediante colores.El uso de colores facilita considerablemente el seguimiento del propietario de cada mensaje.Por ejemplo, los mensajes de Alice se muestran en verde en las tres ventanas.En la tabla siguiente se enumeran los colores que se utilizan en el ejemplo y sus significados.

ID

Color

Hay que usar

0

Red

Mensajes de error de seguridad.

1

Yellow

Menú de opciones y mensajes de la aplicación.

2

White

Mensajes de Bob.

3

Cyan

Datos proporcionados por el usuario.

4

Green

Mensajes de Alice.

5

Purple

Mensajes de Mallory.

6

Yellow

Mensaje de reinicio de la aplicación.

7

Gray

Datos del mensaje cifrado.

Vea también

Referencia

Console

ConsoleColor

Conceptos

Ejemplo de comunicación segura de criptografía de próxima generación (CNG)

Código fuente Utilities.cs (Ejemplo CNG)

Información general sobre el código fuente (Ejemplo CNG)

Otros recursos

Calcular referencias de datos con invocación de plataforma