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
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)