ROB: Hola, soy Rob, y vamos a descifrar el programa de Vigenère. Así que lo primero que tenemos que hacer es hacer Asegúrese de que el usuario ha introducido lo que esperábamos que en la línea de comandos. Así que si argc no es 2 que eso significa, ya sea el usuario no entró en la cadena que quieren ser utilizando como nuestra encriptación cadena, o se entrado demasiadas cosas. Y no sabemos qué hacer con esas otras cosas. Así que les decimos lo que debería haber entrado. Y volvemos. Ahora, suponiendo que argc fue de 2, podemos continuar con el resto del programa. Nos alias el nombre de argv [1] en la palabra clave variable. Así que nosotros no tenemos que utilizar el nombre de argv [1] todo el resto del programa. Y tal vez nos olvidamos de lo que eso significa, y así sucesivamente. La palabra clave es un nombre mucho más bonito. Y nos agarramos de inmediato la longitud de nuestra palabra clave aquí. OK, así que ahora queremos comprobar que nuestra palabra clave es realmente válida. La palabra clave se utiliza para cifrar las cadenas sólo debe ser alfabético personajes. Si el usuario ha introducido no alfabético caracteres, deberíamos decir, la palabra clave sólo puede contener un medio de Z y luego regresar. Así que este bucle for itera sobre todos personajes de nuestra palabra clave, comprobando que si uno no es alfabético y luego tenemos que imprimir esa advertencia. Ahora, una vez que lleguemos a este punto, sabemos que la cadena debe ser correcta. La palabra clave debe ser correcta. Y ahora tenemos que hacer llegar el mensaje de el usuario que nos quieren cifrar con la clave. Así que para conseguir ese mensaje, tenemos una hacer, mientras que bucle que va a obtener continuamente una cadena del usuario hasta que entren en una cadena válida. Continuando, vemos aquí esta variable, int nun_letters_seen. Ya veremos por qué necesitamos que en un segundo. Pero este bucle se va a repetir de i es igual a 0 hasta el final hasta que i es igual a n, lo que significa que estamos iterando sobre todo posible personajes de nuestro mensaje. Porque queremos cifrar todos los personajes de nuestro mensaje. Así notamos que hacemos si (isalphamessage [I], porque nosotros no queremos cifrar caracteres que no son alfabético. Si hay símbolos, espacios, o números, no lo hacemos desee cifrar esos. Ahora, suponiendo que es alfabético, primero vamos a averiguar lo que realmente quiere cifrar el mensaje utilizando. Entonces, ¿qué quiero decir con esto? Vamos a suponer que la frase clave el usuario ingresó era abc. Eso es lo que estamos utilizando para cifrar. Ahora, ingenuamente, pensamos que eso significa que queremos cifrar el primer carácter de nuestro mensaje por 0, ya que un medio girar el carácter por 0. Queremos cifrar el segundo carácter por 1, tercer personaje por 2, el cuarto carácter por 0, el quinto por 1, la sexta por 2, y así sucesivamente. Pero recuerde, que queremos saltar espacios y símbolos y números. Esto significa que si el usuario había entrado hola mundo como el mensaje que quieren cifrar, a continuación, queremos cifrar la h por 0 correspondiente a la a, la e por 1, el l por 2, el l por 0, el o antes del 1. Queremos saltar el espacio, cifrada el W por 2, el O por 0, 1, 2, 0. Así que notar, si no hubiéramos saltado la espacio, entonces habría cifrado la w por 0 y terminó con la cadena incorrecta. OK, esto es lo que necesitamos la variable num_letters_seen para. Si solo nos íbamos a cifrar utilizando este método, que no omitir símbolos, espacios y números, entonces sólo podría utilizar la variable i como lo para indexar nuestra frase clave con. Tenemos que utilizar num_letters_seen mantener pista del lugar real en el frase clave que queremos indexar. Así que aquí, si la palabra clave que tenemos, si num_letter_seen keyword_length mod, por lo ¿por qué necesitamos de mod por la longitud de palabras clave? Bueno, hola mundo era un buen ejemplo. Si la palabra clave es abc, entonces necesitamos para cifrar continuamente por un entonces b entonces c, luego envolver la vuelta, a, b, c, a, b, c. Así que tenemos que modificar la longitud de la palabra clave con el fin de concluir la vuelta. Así que si esto es una letra mayúscula, entonces queremos cifrar por el posición de esa letra en el alfabeto, la cual obtenemos con sólo restando el capital A. Y del mismo modo, para las letras minúsculas, que puede obtener la clave que queremos por restando a minúscula. Así que, independientemente de si la carta en la frase clave fue mayúscula o letra minúscula, vamos a cifrar por la misma cantidad. Ahora que tenemos la llave, que vemos aquí, que si el mensaje i es una mayúscula carácter, entonces queremos calcular el posición en el alfabeto de que carácter, añadir nuestra llave a la misma, envuelva de nuevo alrededor de modo que si nos fuimos más allá de un z volvemos a, b, c, y así sucesivamente. Entonces, finalmente, añadir de nuevo sobre el capital A. Así cambiamos de nuevo en el botón [? Ascii?] gama de estos caracteres en lugar de la posición numérica en el alfabeto de estos personajes. Y hacemos lo mismo para caracteres en minúsculas. Salvo que queremos restar minúsculas una y agregarlo de nuevo en el extremo, a minúscula. Tenga en cuenta que sólo es num_letter_seen incrementado si el mensaje que estaba alfabético. Así es como nos saltamos espacios, símbolos y números en nuestra frase clave, ya num_letter_seen es lo que estamos utilizando para indexar nuestra palabra clave. Por último, en el extremo, ahora que el mensaje i se ha cifrado, que imprimo mensaje i. Y eso es todo. Mi nombre es Rob. Y esto es Vigenère. [REPRODUCCIÓN DE MÚSICA]