1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Ola, eu son Rob, e imos descifrar o programa Vigenère. 3 00:00:16,980 --> 00:00:21,180 Entón o primeiro que temos que facer é Comproba se o usuario inseriu o que esperabamos 4 00:00:21,180 --> 00:00:23,240 los para a liña de comandos. 5 00:00:23,240 --> 00:00:28,720 Entón, se argc non é 2, que significa tanto o usuario non entrou na cadea de nós 6 00:00:28,720 --> 00:00:31,780 quere usar como a nosa cifrado corda, ou 7 00:00:31,780 --> 00:00:32,890 entrou moitas cousas. 8 00:00:32,890 --> 00:00:35,130 E nós non sabemos o que facer coas outras cousas. 9 00:00:35,130 --> 00:00:37,960 >> Por iso, dicir-lles o que eles debería entrar. 10 00:00:37,960 --> 00:00:39,300 E volvemos. 11 00:00:39,300 --> 00:00:44,570 Agora, admitindo que argc era 2, podemos continuar co resto do programa. 12 00:00:44,570 --> 00:00:47,890 >> Nós alias nome de argv [1] 13 00:00:47,890 --> 00:00:49,750 para a palabra clave variable. 14 00:00:49,750 --> 00:00:51,860 De xeito que non ten por usar o nome argv [1] 15 00:00:51,860 --> 00:00:53,050 durante todo o resto do programa. 16 00:00:53,050 --> 00:00:55,570 E quizais nós imos esquecer o que que significa e así por diante. 17 00:00:55,570 --> 00:00:57,830 Contrasinal é un nome moito máis agradable. 18 00:00:57,830 --> 00:01:01,982 E nós imos inmediatamente coller a lonxitude da nosa contrasinal aquí. 19 00:01:01,982 --> 00:01:07,460 >> OK, entón agora queremos comprobar que nosa palabra clave é realmente correcto. 20 00:01:07,460 --> 00:01:11,250 O contrasinal que usan para cifrar cordas debe só ser alfabética 21 00:01:11,250 --> 00:01:12,400 caracteres. 22 00:01:12,400 --> 00:01:16,830 Se o usuario introduciu non alfabética caracteres, hai que dicir, contrasinal 23 00:01:16,830 --> 00:01:20,170 debe conter só un medio Z e despois volver. 24 00:01:20,170 --> 00:01:24,370 Polo tanto, este lazo for sobre todo personaxes da nosa palabra clave, comprobando 25 00:01:24,370 --> 00:01:31,870 que, se a persoa non está en orde alfabética, a continuación, necesitamos imprimir este aviso. 26 00:01:31,870 --> 00:01:36,285 >> Agora, unha vez que chegar a este punto, sabemos que a cadea debe ser correcta. 27 00:01:36,285 --> 00:01:38,230 O contrasinal debe ser correcta. 28 00:01:38,230 --> 00:01:40,880 E agora temos que pasar a mensaxe de o usuario que queiramos 29 00:01:40,880 --> 00:01:43,910 cifrar con esa frase clave. 30 00:01:43,910 --> 00:01:46,780 Así, para obter esta mensaxe, temos un facer mentres loop que vai 31 00:01:46,780 --> 00:01:52,650 continuamente obter unha cadea do usuario ata que eles entran nunha secuencia válida. 32 00:01:52,650 --> 00:01:58,690 >> Continuando, vemos aquí a esta variable, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 A ver por iso que necesitamos que en un segundo. 34 00:02:01,300 --> 00:02:07,320 Pero este ciclo for vai facer unha iteración i é igual a 0 todo o camiño ata i 35 00:02:07,320 --> 00:02:10,940 é igual a n, o que significa que estamos interactuar sobre todo o posible 36 00:02:10,940 --> 00:02:13,020 personaxes da nosa mensaxe. 37 00:02:13,020 --> 00:02:17,370 Porque queremos cifrar todo os personaxes da nosa mensaxe. 38 00:02:17,370 --> 00:02:22,970 Entón, teña en conta o que facemos se (isalphamessage [I] porque nós non queremos para cifrar 39 00:02:22,970 --> 00:02:25,660 caracteres que non están alfabética. 40 00:02:25,660 --> 00:02:28,810 Se hai símbolos, espazos, ou números, non 41 00:02:28,810 --> 00:02:30,730 Quere cifrar. 42 00:02:30,730 --> 00:02:37,220 >> Agora, supoñendo que está en orde alfabética, primeiro quero descubrir o que 43 00:02:37,220 --> 00:02:40,890 realmente quere cifrar a mensaxe a usar. 44 00:02:40,890 --> 00:02:42,710 Entón, o que quero dicir con iso? 45 00:02:42,710 --> 00:02:46,740 >> Imos supor que a frase clave o usuario inseriu foi ABC. 46 00:02:46,740 --> 00:02:49,070 Iso é o que estamos a usar para cifrar. 47 00:02:49,070 --> 00:02:54,850 Agora, inxenuamente, pensamos que significa que queremos cifrar o primeiro carácter 48 00:02:54,850 --> 00:02:59,740 da mensaxe por 0, xa que un medio xirando o personaxe por 0. 49 00:02:59,740 --> 00:03:04,395 >> Queremos cifrar o segundo personaxe por 1, terceiro personaxe por 2, 50 00:03:04,395 --> 00:03:09,170 o cuarto carácter por 0, o quinto por 1, o sexto por 2, e así por diante. 51 00:03:09,170 --> 00:03:14,440 Pero lembre que queremos saltar espazos e símbolos e números. 52 00:03:14,440 --> 00:03:21,520 Isto significa que, se o usuario entrara Ola mundo como a mensaxe 53 00:03:21,520 --> 00:03:26,590 que quere cifrar e logo queremos cifrar o h por 0 54 00:03:26,590 --> 00:03:32,680 correspondente á unha, o e por 1, o l por 2, a l por 0, o o en 1. 55 00:03:32,680 --> 00:03:41,050 Queremos saltar o espazo, cifrado o w por 2, oo por 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Entón, teña en conta, se non tivésemos pulado o espazo, entón teriamos cifrado 57 00:03:45,250 --> 00:03:51,240 a w por 0 e acabou con a cadea incorrecta. 58 00:03:51,240 --> 00:03:57,470 >> OK, iso é o que necesitamos a variable num_letters_seen para. 59 00:03:57,470 --> 00:04:04,450 Se nós estabamos indo para cifrar usando este método, que non ignora 60 00:04:04,450 --> 00:04:09,860 símbolos, espazos e números, entón nós podería usar só a variable i como o que 61 00:04:09,860 --> 00:04:12,540 ao índice na nosa frase clave con. 62 00:04:12,540 --> 00:04:17,620 Necesitamos utilizar num_letters_seen para manter pista do lugar real no 63 00:04:17,620 --> 00:04:21,146 frase clave que queremos índice. 64 00:04:21,146 --> 00:04:32,240 Entón, aquí, se a palabra clave que temos, se num_letter_seen keyword_length mod, entón 65 00:04:32,240 --> 00:04:34,570 por que necesitamos mod por lonxitude de contrasinal? 66 00:04:34,570 --> 00:04:36,630 >> Ben, Ola mundo era un bo exemplo. 67 00:04:36,630 --> 00:04:42,310 Se a palabra clave é abc, entón necesitamos cifrar continuamente por un entón b 68 00:04:42,310 --> 00:04:45,740 logo c, logo enrole arredor de volta, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Por iso, necesitamos mod pola lonxitude contrasinal a fin de envolve-volta. 70 00:04:50,110 --> 00:04:57,280 >> Entón, se isto é unha letra maiúscula, entón queremos cifrar polo 71 00:04:57,280 --> 00:05:01,450 posición de que letra do alfabeto, que temos só 72 00:05:01,450 --> 00:05:06,730 subtraindo a capital de A. E do mesmo xeito, a letras minúsculas, nós 73 00:05:06,730 --> 00:05:13,000 pode obter a clave que queremos por subtraindo a minúscula a. 74 00:05:13,000 --> 00:05:16,910 Así, independentemente de a carta na frase clave era unha capital ou 75 00:05:16,910 --> 00:05:21,640 letra minúscula, imos cifrar polo mesmo importe. 76 00:05:21,640 --> 00:05:28,680 >> Agora que temos a nosa chave, vemos aquí, que se a mensaxe é un i maiúscula 77 00:05:28,680 --> 00:05:32,660 personaxe, entón queremos calcular a posición na que o alfabeto de 78 00:05:32,660 --> 00:05:39,460 personaxe, engadir a nosa clave para iso, enrole atrás en torno de xeito que, se pasou por un 79 00:05:39,460 --> 00:05:43,170 z imos voltar a, b, c, e así por diante. 80 00:05:43,170 --> 00:05:49,070 Entón, finalmente, engadir de novo sobre o capital A. Entón, cambiamos ao seu [? ASCII?] 81 00:05:49,070 --> 00:05:52,010 variedade destes caracteres no canto do posición numérica no alfabeto 82 00:05:52,010 --> 00:05:53,540 destes personaxes. 83 00:05:53,540 --> 00:05:56,610 >> E nós facemos o mesmo para caracteres minúsculos. 84 00:05:56,610 --> 00:06:00,070 Excepto queremos restar minúsculas un e engadir lo de volta en no 85 00:06:00,070 --> 00:06:02,900 final, en minúsculas a. 86 00:06:02,900 --> 00:06:08,120 Teña en conta que só é num_letter_seen incrementado se a mensaxe que eu estaba 87 00:06:08,120 --> 00:06:09,640 alfabética. 88 00:06:09,640 --> 00:06:15,790 É así que saltar espazos, símbolos e números na nosa frase clave, xa que 89 00:06:15,790 --> 00:06:20,520 num_letter_seen é o que estamos a usar ao índice na nosa contrasinal. 90 00:06:20,520 --> 00:06:24,540 >> Finalmente, ao final, xa que a mensaxe i foi cifrado, nós 91 00:06:24,540 --> 00:06:26,280 imprimir mensaxe i. 92 00:06:26,280 --> 00:06:27,890 E é iso. 93 00:06:27,890 --> 00:06:28,670 O meu nome é Rob. 94 00:06:28,670 --> 00:06:31,020 E esta é Vigenère. 95 00:06:31,020 --> 00:06:32,850 >> [Música tocando] 96 00:06:32,850 --> 00:06:36,651