1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hola, soy Rob, y vamos a descifrar el programa de Vigenère. 3 00:00:16,980 --> 00:00:21,180 Así que lo primero que tenemos que hacer es hacer Asegúrese de que el usuario ha introducido lo que esperábamos 4 00:00:21,180 --> 00:00:23,240 que en la línea de comandos. 5 00:00:23,240 --> 00:00:28,720 Así que si argc no es 2 que eso significa, ya sea el usuario no entró en la cadena que 6 00:00:28,720 --> 00:00:31,780 quieren ser utilizando como nuestra encriptación cadena, o se 7 00:00:31,780 --> 00:00:32,890 entrado demasiadas cosas. 8 00:00:32,890 --> 00:00:35,130 Y no sabemos qué hacer con esas otras cosas. 9 00:00:35,130 --> 00:00:37,960 >> Así que les decimos lo que debería haber entrado. 10 00:00:37,960 --> 00:00:39,300 Y volvemos. 11 00:00:39,300 --> 00:00:44,570 Ahora, suponiendo que argc fue de 2, podemos continuar con el resto del programa. 12 00:00:44,570 --> 00:00:47,890 >> Nos alias el nombre de argv [1] 13 00:00:47,890 --> 00:00:49,750 en la palabra clave variable. 14 00:00:49,750 --> 00:00:51,860 Así que nosotros no tenemos que utilizar el nombre de argv [1] 15 00:00:51,860 --> 00:00:53,050 todo el resto del programa. 16 00:00:53,050 --> 00:00:55,570 Y tal vez nos olvidamos de lo que eso significa, y así sucesivamente. 17 00:00:55,570 --> 00:00:57,830 La palabra clave es un nombre mucho más bonito. 18 00:00:57,830 --> 00:01:01,982 Y nos agarramos de inmediato la longitud de nuestra palabra clave aquí. 19 00:01:01,982 --> 00:01:07,460 >> OK, así que ahora queremos comprobar que nuestra palabra clave es realmente válida. 20 00:01:07,460 --> 00:01:11,250 La palabra clave se utiliza para cifrar las cadenas sólo debe ser alfabético 21 00:01:11,250 --> 00:01:12,400 personajes. 22 00:01:12,400 --> 00:01:16,830 Si el usuario ha introducido no alfabético caracteres, deberíamos decir, la palabra clave 23 00:01:16,830 --> 00:01:20,170 sólo puede contener un medio de Z y luego regresar. 24 00:01:20,170 --> 00:01:24,370 Así que este bucle for itera sobre todos personajes de nuestra palabra clave, comprobando 25 00:01:24,370 --> 00:01:31,870 que si uno no es alfabético y luego tenemos que imprimir esa advertencia. 26 00:01:31,870 --> 00:01:36,285 >> Ahora, una vez que lleguemos a este punto, sabemos que la cadena debe ser correcta. 27 00:01:36,285 --> 00:01:38,230 La palabra clave debe ser correcta. 28 00:01:38,230 --> 00:01:40,880 Y ahora tenemos que hacer llegar el mensaje de el usuario que nos quieren 29 00:01:40,880 --> 00:01:43,910 cifrar con la clave. 30 00:01:43,910 --> 00:01:46,780 Así que para conseguir ese mensaje, tenemos una hacer, mientras que bucle que va a 31 00:01:46,780 --> 00:01:52,650 obtener continuamente una cadena del usuario hasta que entren en una cadena válida. 32 00:01:52,650 --> 00:01:58,690 >> Continuando, vemos aquí esta variable, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Ya veremos por qué necesitamos que en un segundo. 34 00:02:01,300 --> 00:02:07,320 Pero este bucle se va a repetir de i es igual a 0 hasta el final hasta que i 35 00:02:07,320 --> 00:02:10,940 es igual a n, lo que significa que estamos iterando sobre todo posible 36 00:02:10,940 --> 00:02:13,020 personajes de nuestro mensaje. 37 00:02:13,020 --> 00:02:17,370 Porque queremos cifrar todos los personajes de nuestro mensaje. 38 00:02:17,370 --> 00:02:22,970 Así notamos que hacemos si (isalphamessage [I], porque nosotros no queremos cifrar 39 00:02:22,970 --> 00:02:25,660 caracteres que no son alfabético. 40 00:02:25,660 --> 00:02:28,810 Si hay símbolos, espacios, o números, no lo hacemos 41 00:02:28,810 --> 00:02:30,730 desee cifrar esos. 42 00:02:30,730 --> 00:02:37,220 >> Ahora, suponiendo que es alfabético, primero vamos a averiguar lo que 43 00:02:37,220 --> 00:02:40,890 realmente quiere cifrar el mensaje utilizando. 44 00:02:40,890 --> 00:02:42,710 Entonces, ¿qué quiero decir con esto? 45 00:02:42,710 --> 00:02:46,740 >> Vamos a suponer que la frase clave el usuario ingresó era abc. 46 00:02:46,740 --> 00:02:49,070 Eso es lo que estamos utilizando para cifrar. 47 00:02:49,070 --> 00:02:54,850 Ahora, ingenuamente, pensamos que eso significa que queremos cifrar el primer carácter 48 00:02:54,850 --> 00:02:59,740 de nuestro mensaje por 0, ya que un medio girar el carácter por 0. 49 00:02:59,740 --> 00:03:04,395 >> Queremos cifrar el segundo carácter por 1, tercer personaje por 2, 50 00:03:04,395 --> 00:03:09,170 el cuarto carácter por 0, el quinto por 1, la sexta por 2, y así sucesivamente. 51 00:03:09,170 --> 00:03:14,440 Pero recuerde, que queremos saltar espacios y símbolos y números. 52 00:03:14,440 --> 00:03:21,520 Esto significa que si el usuario había entrado hola mundo como el mensaje 53 00:03:21,520 --> 00:03:26,590 que quieren cifrar, a continuación, queremos cifrar la h por 0 54 00:03:26,590 --> 00:03:32,680 correspondiente a la a, la e por 1, el l por 2, el l por 0, el o antes del 1. 55 00:03:32,680 --> 00:03:41,050 Queremos saltar el espacio, cifrada el W por 2, el O por 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Así que notar, si no hubiéramos saltado la espacio, entonces habría cifrado 57 00:03:45,250 --> 00:03:51,240 la w por 0 y terminó con la cadena incorrecta. 58 00:03:51,240 --> 00:03:57,470 >> OK, esto es lo que necesitamos la variable num_letters_seen para. 59 00:03:57,470 --> 00:04:04,450 Si solo nos íbamos a cifrar utilizando este método, que no omitir 60 00:04:04,450 --> 00:04:09,860 símbolos, espacios y números, entonces sólo podría utilizar la variable i como lo 61 00:04:09,860 --> 00:04:12,540 para indexar nuestra frase clave con. 62 00:04:12,540 --> 00:04:17,620 Tenemos que utilizar num_letters_seen mantener pista del lugar real en el 63 00:04:17,620 --> 00:04:21,146 frase clave que queremos indexar. 64 00:04:21,146 --> 00:04:32,240 Así que aquí, si la palabra clave que tenemos, si num_letter_seen keyword_length mod, por lo 65 00:04:32,240 --> 00:04:34,570 ¿por qué necesitamos de mod por la longitud de palabras clave? 66 00:04:34,570 --> 00:04:36,630 >> Bueno, hola mundo era un buen ejemplo. 67 00:04:36,630 --> 00:04:42,310 Si la palabra clave es abc, entonces necesitamos para cifrar continuamente por un entonces b 68 00:04:42,310 --> 00:04:45,740 entonces c, luego envolver la vuelta, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Así que tenemos que modificar la longitud de la palabra clave con el fin de concluir la vuelta. 70 00:04:50,110 --> 00:04:57,280 >> Así que si esto es una letra mayúscula, entonces queremos cifrar por el 71 00:04:57,280 --> 00:05:01,450 posición de esa letra en el alfabeto, la cual obtenemos con sólo 72 00:05:01,450 --> 00:05:06,730 restando el capital A. Y del mismo modo, para las letras minúsculas, que 73 00:05:06,730 --> 00:05:13,000 puede obtener la clave que queremos por restando a minúscula. 74 00:05:13,000 --> 00:05:16,910 Así que, independientemente de si la carta en la frase clave fue mayúscula o 75 00:05:16,910 --> 00:05:21,640 letra minúscula, vamos a cifrar por la misma cantidad. 76 00:05:21,640 --> 00:05:28,680 >> Ahora que tenemos la llave, que vemos aquí, que si el mensaje i es una mayúscula 77 00:05:28,680 --> 00:05:32,660 carácter, entonces queremos calcular el posición en el alfabeto de que 78 00:05:32,660 --> 00:05:39,460 carácter, añadir nuestra llave a la misma, envuelva de nuevo alrededor de modo que si nos fuimos más allá de un 79 00:05:39,460 --> 00:05:43,170 z volvemos a, b, c, y así sucesivamente. 80 00:05:43,170 --> 00:05:49,070 Entonces, finalmente, añadir de nuevo sobre el capital A. Así cambiamos de nuevo en el botón [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 gama de estos caracteres en lugar de la posición numérica en el alfabeto 82 00:05:52,010 --> 00:05:53,540 de estos personajes. 83 00:05:53,540 --> 00:05:56,610 >> Y hacemos lo mismo para caracteres en minúsculas. 84 00:05:56,610 --> 00:06:00,070 Salvo que queremos restar minúsculas una y agregarlo de nuevo en el 85 00:06:00,070 --> 00:06:02,900 extremo, a minúscula. 86 00:06:02,900 --> 00:06:08,120 Tenga en cuenta que sólo es num_letter_seen incrementado si el mensaje que estaba 87 00:06:08,120 --> 00:06:09,640 alfabético. 88 00:06:09,640 --> 00:06:15,790 Así es como nos saltamos espacios, símbolos y números en nuestra frase clave, ya 89 00:06:15,790 --> 00:06:20,520 num_letter_seen es lo que estamos utilizando para indexar nuestra palabra clave. 90 00:06:20,520 --> 00:06:24,540 >> Por último, en el extremo, ahora que el mensaje i se ha cifrado, que 91 00:06:24,540 --> 00:06:26,280 imprimo mensaje i. 92 00:06:26,280 --> 00:06:27,890 Y eso es todo. 93 00:06:27,890 --> 00:06:28,670 Mi nombre es Rob. 94 00:06:28,670 --> 00:06:31,020 Y esto es Vigenère. 95 00:06:31,020 --> 00:06:32,850 >> [REPRODUCCIÓN DE MÚSICA] 96 00:06:32,850 --> 00:06:36,651