1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hoi, ik ben Rob, en laten we ontcijferen het Vigenere programma. 3 00:00:16,980 --> 00:00:21,180 Dus eerste wat we moeten doen is het maken ervoor dat de gebruiker heeft ingevoerd wat we verwacht 4 00:00:21,180 --> 00:00:23,240 ze op de opdrachtregel. 5 00:00:23,240 --> 00:00:28,720 Dus als argc is niet 2 dat betekent ofwel de gebruiker heeft de string die we niet betreden 6 00:00:28,720 --> 00:00:31,780 willen gebruiken als onze versleutelen tekenreeks of zij 7 00:00:31,780 --> 00:00:32,890 ingevoerd te veel dingen. 8 00:00:32,890 --> 00:00:35,130 En we weten niet wat te doen met die andere dingen. 9 00:00:35,130 --> 00:00:37,960 >> Hen zo vertellen we wat ze zou ingaan. 10 00:00:37,960 --> 00:00:39,300 En we terugkeren. 11 00:00:39,300 --> 00:00:44,570 Nu, in de veronderstelling dat argc was 2, we kunnen verder met de rest van het programma. 12 00:00:44,570 --> 00:00:47,890 >> We alias de naam van argv [1] 13 00:00:47,890 --> 00:00:49,750 in de variabele zoekwoord. 14 00:00:49,750 --> 00:00:51,860 Zodat we niet hoeven te Gebruik de naam argv [1] 15 00:00:51,860 --> 00:00:53,050 de rest van het programma. 16 00:00:53,050 --> 00:00:55,570 En misschien zullen we vergeten wat betekent enzovoort. 17 00:00:55,570 --> 00:00:57,830 Zoekwoord een veel leukere naam. 18 00:00:57,830 --> 00:01:01,982 En we zullen onmiddellijk grijpen de lengte van onze trefwoord hier. 19 00:01:01,982 --> 00:01:07,460 >> OK, dus nu willen we controleren dat onze trefwoord is eigenlijk geldig. 20 00:01:07,460 --> 00:01:11,250 Het sleutelwoord we gebruiken om strings te coderen moet gewoon alfabetisch zijn 21 00:01:11,250 --> 00:01:12,400 karakters. 22 00:01:12,400 --> 00:01:16,830 Als de gebruiker niet-alfabetische ingevoerd karakters, moeten we zeggen, trefwoord 23 00:01:16,830 --> 00:01:20,170 mag alleen een door bevatten Z en dan terug. 24 00:01:20,170 --> 00:01:24,370 Dus deze for loop over alle tekens van onze trefwoord, het controleren 25 00:01:24,370 --> 00:01:31,870 dat als men niet alfabetisch dan moeten we die waarschuwing af te drukken. 26 00:01:31,870 --> 00:01:36,285 >> Nu, als we eenmaal op dit punt, we weten dat de tekenreeks juiste moet zijn. 27 00:01:36,285 --> 00:01:38,230 Het zoekwoord moet correct zijn. 28 00:01:38,230 --> 00:01:40,880 En nu moeten we de boodschap uit de gebruiker dat ze willen dat we 29 00:01:40,880 --> 00:01:43,910 versleutelen met die sleutelzin. 30 00:01:43,910 --> 00:01:46,780 Dus om die boodschap te krijgen, hebben we een do while lus die gaat 31 00:01:46,780 --> 00:01:52,650 continu krijgen een string van de gebruiker totdat ze een geldig string. 32 00:01:52,650 --> 00:01:58,690 >> Verder te gaan, zien we hier deze variabele, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 We zullen zien waarom we nodig hebben dat in een tweede. 34 00:02:01,300 --> 00:02:07,320 Maar deze lus gaat herhalen van i gelijk is aan 0 helemaal naar i 35 00:02:07,320 --> 00:02:10,940 gelijk aan n, wat betekent dat we itereren over alle mogelijke 36 00:02:10,940 --> 00:02:13,020 personages in onze boodschap. 37 00:02:13,020 --> 00:02:17,370 Want we willen allemaal versleutelen de personages in onze boodschap. 38 00:02:17,370 --> 00:02:22,970 Zo merken we doen als (isalphamessage [I], omdat we niet willen versleutelen 39 00:02:22,970 --> 00:02:25,660 tekens die niet alfabetisch. 40 00:02:25,660 --> 00:02:28,810 Als er symbolen, spaties of cijfers, doen we niet 41 00:02:28,810 --> 00:02:30,730 willen die coderen. 42 00:02:30,730 --> 00:02:37,220 >> Nu, aannemende dat het alfabetisch, we willen eerst uitzoeken wat we 43 00:02:37,220 --> 00:02:40,890 eigenlijk wilt versleutelen het bericht gebruikt. 44 00:02:40,890 --> 00:02:42,710 Dus wat moet ik daarmee? 45 00:02:42,710 --> 00:02:46,740 >> Laten we aannemen dat de sleutelzin de gebruiker heeft ingevoerd was abc. 46 00:02:46,740 --> 00:02:49,070 Dat is wat we gebruiken om te versleutelen. 47 00:02:49,070 --> 00:02:54,850 Nu, naïef, denken wij dat betekent dat we willen het eerste teken coderen 48 00:02:54,850 --> 00:02:59,740 onze boodschap door 0, aangezien middel het draaien van de teken door 0. 49 00:02:59,740 --> 00:03:04,395 >> We willen naar de tweede letter versleutelen met 1, derde teken door 2, 50 00:03:04,395 --> 00:03:09,170 het vierde teken van 0, de vijfde met 1, de zesde van 2, enzovoort. 51 00:03:09,170 --> 00:03:14,440 Maar vergeet niet, dat wij willen overslaan spaties en symbolen en getallen. 52 00:03:14,440 --> 00:03:21,520 Dit betekent dat als de gebruiker had ingevoerd hallo wereld als de boodschap 53 00:03:21,520 --> 00:03:26,590 dat ze willen versleutelen, dan we willen versleutelen van de h door 0 54 00:03:26,590 --> 00:03:32,680 overeenkomend met de a, e met 1, l door 2, de l door 0, de o door 1. 55 00:03:32,680 --> 00:03:41,050 We willen de ruimte overslaan, versleutelde w door 2 o door 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Dus merken, als we niet hadden overgeslagen de ruimte, dan zouden we hebben gecodeerd 57 00:03:45,250 --> 00:03:51,240 de w door 0 en eindigde met de verkeerde snaar. 58 00:03:51,240 --> 00:03:57,470 >> OK, dit is wat we de variabele nodig num_letters_seen voor. 59 00:03:57,470 --> 00:04:04,450 Als we alleen zouden gaan coderen met behulp van Deze methode, die niet doorgaan 60 00:04:04,450 --> 00:04:09,860 symbolen, spaties en getallen, dan kunnen we kon gewoon gebruik maken van de variabele i als wat 61 00:04:09,860 --> 00:04:12,540 naar index in onze sleutelzin met. 62 00:04:12,540 --> 00:04:17,620 We moeten num_letters_seen gebruiken om te houden spoor van de werkelijke plaats in de 63 00:04:17,620 --> 00:04:21,146 sleutelzin die we willen indexeren. 64 00:04:21,146 --> 00:04:32,240 Hier, als het zoekwoord we, indien num_letter_seen mod keyword_length, dus 65 00:04:32,240 --> 00:04:34,570 waarom hebben we nodig om te modden op trefwoord lengte? 66 00:04:34,570 --> 00:04:36,630 >> Nou, hallo wereld was een goed voorbeeld van. 67 00:04:36,630 --> 00:04:42,310 Als het zoekwoord abc was, dan moeten we om continu te versleutelen met een toen b 68 00:04:42,310 --> 00:04:45,740 dan c, dan wikkel terug rond, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Dus moeten we mod op trefwoord lengte om achterom te wikkelen. 70 00:04:50,110 --> 00:04:57,280 >> Dus als dit een hoofdletter, dan willen we versleutelen door de 71 00:04:57,280 --> 00:05:01,450 positie van die letter in het alfabet, die we krijgen door gewoon 72 00:05:01,450 --> 00:05:06,730 aftrekken van zijn kapitaal A. En Ook voor kleine letters, we 73 00:05:06,730 --> 00:05:13,000 kan de sleutel die we willen krijgen door af te trekken uit kleine letters een. 74 00:05:13,000 --> 00:05:16,910 Dus ongeacht of de brief in de sleutelzin was een kapitaal of 75 00:05:16,910 --> 00:05:21,640 kleine letter, gaan we versleutelen met hetzelfde bedrag. 76 00:05:21,640 --> 00:05:28,680 >> Nu we onze sleutel zien we hier, dat als boodschap i een hoofdletter 77 00:05:28,680 --> 00:05:32,660 karakter, dan willen we berekenen de positie in het alfabet van die 78 00:05:32,660 --> 00:05:39,460 karakter, voeg onze sleutel tot het, wikkel terug rond zodat als we langs gingen een 79 00:05:39,460 --> 00:05:43,170 z we terug naar a, b, c, en ga zo maar door. 80 00:05:43,170 --> 00:05:49,070 En dan, eindelijk, weer toevoegen aan het kapitaal A. Dus verschuiven we terug in de [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 bereik van deze tekens in plaats van de numerieke positie in het alfabet 82 00:05:52,010 --> 00:05:53,540 van deze tekens. 83 00:05:53,540 --> 00:05:56,610 >> En we hetzelfde doen voor kleine letters. 84 00:05:56,610 --> 00:06:00,070 Behalve wij willen aftrekken uit kleine letters een en voeg het terug in de 85 00:06:00,070 --> 00:06:02,900 einde, kleine letters een. 86 00:06:02,900 --> 00:06:08,120 Merk op dat num_letter_seen slechts verhoogd als boodschap ik was 87 00:06:08,120 --> 00:06:09,640 alfabetisch. 88 00:06:09,640 --> 00:06:15,790 Dit is hoe we overslaan spaties, symbolen en nummers in onze sleutelzin, aangezien 89 00:06:15,790 --> 00:06:20,520 num_letter_seen is wat we gebruiken naar index in onze zoekwoord. 90 00:06:20,520 --> 00:06:24,540 >> Tenslotte uiteindelijk nu boodschap i is versleuteld, we 91 00:06:24,540 --> 00:06:26,280 uitprinten bericht i. 92 00:06:26,280 --> 00:06:27,890 En dat is het. 93 00:06:27,890 --> 00:06:28,670 Mijn naam is Rob. 94 00:06:28,670 --> 00:06:31,020 En dit is Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Muziek] 96 00:06:32,850 --> 00:06:36,651