1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hola, sóc Rob, i anem a desxifrar el programa de Vigenère. 3 00:00:16,980 --> 00:00:21,180 Així que el primer que hem de fer és fer Assegureu-vos que l'usuari ha introduït el que esperàvem 4 00:00:21,180 --> 00:00:23,240 que en la línia d'ordres. 5 00:00:23,240 --> 00:00:28,720 Així que si argc no és 2, que això significa, ja sigui l'usuari no va entrar a la cadena que 6 00:00:28,720 --> 00:00:31,780 volen ser utilitzant com la nostra encriptació cadena, o es 7 00:00:31,780 --> 00:00:32,890 entrat massa coses. 8 00:00:32,890 --> 00:00:35,130 I no sabem què fer amb aquestes altres coses. 9 00:00:35,130 --> 00:00:37,960 >> Així que els diem el que hauria d'haver entrat. 10 00:00:37,960 --> 00:00:39,300 I tornem. 11 00:00:39,300 --> 00:00:44,570 Ara, suposant que argc va ser de 2, podem continuar amb la resta del programa. 12 00:00:44,570 --> 00:00:47,890 >> Ens àlies el nom de argv [1] 13 00:00:47,890 --> 00:00:49,750 en la paraula clau variable. 14 00:00:49,750 --> 00:00:51,860 Així que nosaltres no hem de utilitzar el nom de argv [1] 15 00:00:51,860 --> 00:00:53,050 tota la resta del programa. 16 00:00:53,050 --> 00:00:55,570 I potser ens oblidem del que això significa, i així successivament. 17 00:00:55,570 --> 00:00:57,830 La paraula clau és un nom molt més bonic. 18 00:00:57,830 --> 00:01:01,982 I ens agafem de seguida la longitud de la nostra paraula clau aquí. 19 00:01:01,982 --> 00:01:07,460 >> OK, així que ara volem comprovar que la nostra paraula clau és realment vàlida. 20 00:01:07,460 --> 00:01:11,250 La paraula clau s'utilitza per xifrar les cadenes només ha de ser alfabètic 21 00:01:11,250 --> 00:01:12,400 personatges. 22 00:01:12,400 --> 00:01:16,830 Si l'usuari ha introduït no alfabètic caràcters, hauríem de dir, la paraula clau 23 00:01:16,830 --> 00:01:20,170 només pot contenir un mitjà de Z i després tornar. 24 00:01:20,170 --> 00:01:24,370 Així que aquest bucle for itera sobre tots personatges de la nostra paraula clau, comprovant 25 00:01:24,370 --> 00:01:31,870 que si un no és alfabètic i després hem de imprimir aquest advertiment. 26 00:01:31,870 --> 00:01:36,285 >> Ara, un cop arribem a aquest punt, sabem que la cadena ha de ser correcta. 27 00:01:36,285 --> 00:01:38,230 La paraula clau ha de ser correcta. 28 00:01:38,230 --> 00:01:40,880 I ara hem de fer arribar el missatge de l'usuari que ens volen 29 00:01:40,880 --> 00:01:43,910 xifrar amb la clau. 30 00:01:43,910 --> 00:01:46,780 Així que per aconseguir aquest missatge, tenim una fer, mentre que bucle que va a 31 00:01:46,780 --> 00:01:52,650 obtenir contínuament una cadena de l'usuari fins que entrin en una cadena vàlida. 32 00:01:52,650 --> 00:01:58,690 >> Continuant, veiem aquí aquesta variable, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Ja veurem per què necessitem que en un segon. 34 00:02:01,300 --> 00:02:07,320 Però aquest bucle es repetirà d'i és igual a 0 fins al final fins que i 35 00:02:07,320 --> 00:02:10,940 és igual a n, el que significa que estem iterant sobretot possible 36 00:02:10,940 --> 00:02:13,020 personatges del nostre missatge. 37 00:02:13,020 --> 00:02:17,370 Perquè volem xifrar tots els personatges del nostre missatge. 38 00:02:17,370 --> 00:02:22,970 Així notem que fem si (isalphamessage [I], perquè nosaltres no volem xifrar 39 00:02:22,970 --> 00:02:25,660 caràcters que no són alfabètic. 40 00:02:25,660 --> 00:02:28,810 Si hi ha símbols, espais, o números, no ho fem 41 00:02:28,810 --> 00:02:30,730 desitgi xifrar aquests. 42 00:02:30,730 --> 00:02:37,220 >> Ara, suposant que és alfabètic, primer anem a esbrinar el que 43 00:02:37,220 --> 00:02:40,890 realment vol xifrar el missatge utilitzant. 44 00:02:40,890 --> 00:02:42,710 Llavors, què vull dir amb això? 45 00:02:42,710 --> 00:02:46,740 >> Anem a suposar que la frase clau l'usuari va ingressar era abc. 46 00:02:46,740 --> 00:02:49,070 Això és el que estem utilitzant per xifrar. 47 00:02:49,070 --> 00:02:54,850 Ara, ingènuament, pensem que això significa que volem xifrar el primer caràcter 48 00:02:54,850 --> 00:02:59,740 del nostre missatge per 0, ja que un mitjà girar el caràcter per 0. 49 00:02:59,740 --> 00:03:04,395 >> Volem xifrar el segon caràcter per 1, tercer personatge per 2, 50 00:03:04,395 --> 00:03:09,170 el quart caràcter per 0, el cinquè per 1, la sisena per 2, i així successivament. 51 00:03:09,170 --> 00:03:14,440 Però recordeu, que volem saltar espais i símbols i números. 52 00:03:14,440 --> 00:03:21,520 Això vol dir que si l'usuari havia entrat hola món com el missatge 53 00:03:21,520 --> 00:03:26,590 que volen xifrar, a continuació, volem xifrar la h per 0 54 00:03:26,590 --> 00:03:32,680 corresponent a la a, la e per 1, el l per 2, el l per 0, el o abans de l'1. 55 00:03:32,680 --> 00:03:41,050 Volem saltar l'espai, xifrada el W per 2, l'O per 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Així notar, si no haguéssim saltat la espai, llavors hauria xifrat 57 00:03:45,250 --> 00:03:51,240 la w per 0 i va acabar amb la cadena incorrecta. 58 00:03:51,240 --> 00:03:57,470 >> OK, això és el que necessitem la variable num_letters_seen per. 59 00:03:57,470 --> 00:04:04,450 Si només ens anàvem a xifrar utilitzant aquest mètode, que no ometre 60 00:04:04,450 --> 00:04:09,860 símbols, espais i nombres, llavors només podria utilitzar la variable i com ho 61 00:04:09,860 --> 00:04:12,540 per indexar la nostra frase clau amb. 62 00:04:12,540 --> 00:04:17,620 Hem d'utilitzar num_letters_seen mantenir pista del lloc real en el 63 00:04:17,620 --> 00:04:21,146 frase clau que volem indexar. 64 00:04:21,146 --> 00:04:32,240 Així que aquí, si la paraula clau que tenim, si num_letter_seen keyword_length mod, per 65 00:04:32,240 --> 00:04:34,570 Per què necessitem de mod per la longitud de paraules clau? 66 00:04:34,570 --> 00:04:36,630 >> Bé, hola món era un bon exemple. 67 00:04:36,630 --> 00:04:42,310 Si la paraula clau és abc, llavors necessitem per xifrar contínuament per un llavors b 68 00:04:42,310 --> 00:04:45,740 llavors c, després embolicar la volta, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Així que hem de modificar la longitud de la paraula clau per tal de concloure la volta. 70 00:04:50,110 --> 00:04:57,280 >> Així que si això és una lletra majúscula, llavors volem xifrar pel 71 00:04:57,280 --> 00:05:01,450 posició d'aquesta lletra en l'alfabet, la qual obtenim amb només 72 00:05:01,450 --> 00:05:06,730 restant el capital A. I de la mateixa manera, per a les lletres minúscules, que 73 00:05:06,730 --> 00:05:13,000 pot obtenir la clau que volem per restant a minúscula. 74 00:05:13,000 --> 00:05:16,910 Així que, independentment de si la carta en la frase clau va ser majúscula o 75 00:05:16,910 --> 00:05:21,640 lletra minúscula, anem a xifrar per la mateixa quantitat. 76 00:05:21,640 --> 00:05:28,680 >> Ara que tenim la clau, que veiem aquí, que si el missatge i és una majúscula 77 00:05:28,680 --> 00:05:32,660 caràcter, llavors volem calcular el posició en l'alfabet que 78 00:05:32,660 --> 00:05:39,460 caràcter, afegir la nostra clau a la mateixa, emboliqui de nou voltant de manera que si ens vam anar més enllà d'un 79 00:05:39,460 --> 00:05:43,170 z tornem a, b, c, i així successivament. 80 00:05:43,170 --> 00:05:49,070 Llavors, finalment, afegir nou sobre el capital A. Així canviem de nou en el botó [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 gamma d'aquests caràcters en lloc de la posició numèrica en l'alfabet 82 00:05:52,010 --> 00:05:53,540 d'aquests personatges. 83 00:05:53,540 --> 00:05:56,610 >> I fem el mateix per caràcters en minúscules. 84 00:05:56,610 --> 00:06:00,070 Llevat que volem restar minúscules una vegada i afegir de nou en el 85 00:06:00,070 --> 00:06:02,900 extrem, a minúscula. 86 00:06:02,900 --> 00:06:08,120 Tingueu en compte que només és num_letter_seen incrementat si el missatge que estava 87 00:06:08,120 --> 00:06:09,640 alfabètic. 88 00:06:09,640 --> 00:06:15,790 Així és com ens saltem espais, símbols i números en la nostra frase clau, ja 89 00:06:15,790 --> 00:06:20,520 num_letter_seen és el que estem utilitzant per indexar la nostra paraula clau. 90 00:06:20,520 --> 00:06:24,540 >> Finalment, en l'extrem, ara que el missatge i s'ha xifrat, que 91 00:06:24,540 --> 00:06:26,280 imprimeixo missatge i. 92 00:06:26,280 --> 00:06:27,890 I això és tot. 93 00:06:27,890 --> 00:06:28,670 El meu nom és Rob. 94 00:06:28,670 --> 00:06:31,020 I això és Vigenère. 95 00:06:31,020 --> 00:06:32,850 >> [REPRODUCCIÓ DE MÚSICA] 96 00:06:32,850 --> 00:06:36,651