1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hæ, ég er Rob, og við skulum ráða á Vigenere program. 3 00:00:16,980 --> 00:00:21,180 Svo fyrsta sem við þurfum að gera er að gera tryggja að notandinn slegið það sem við ráð fyrir 4 00:00:21,180 --> 00:00:23,240 þeim að í stjórn lína. 5 00:00:23,240 --> 00:00:28,720 Þannig að ef argc er ekki 2 sem þýðir annað hvort notandinn ekki að slá inn strengur við 6 00:00:28,720 --> 00:00:31,780 langar að vera með eins brengla okkar band, eða þeir 7 00:00:31,780 --> 00:00:32,890 inn of marga hluti. 8 00:00:32,890 --> 00:00:35,130 Og við vitum ekki hvað ég á að gera með þeim annars. 9 00:00:35,130 --> 00:00:37,960 >> Þannig að við að segja þeim hvað þeir ætti að hafa slegið inn. 10 00:00:37,960 --> 00:00:39,300 Og við aftur. 11 00:00:39,300 --> 00:00:44,570 Nú, að því gefnu að argc var 2, getum við halda áfram með the hvíla af the program. 12 00:00:44,570 --> 00:00:47,890 >> Við alias nafn argv [1] 13 00:00:47,890 --> 00:00:49,750 í breytunni leitarorð. 14 00:00:49,750 --> 00:00:51,860 Svo að við þurfum ekki að nota nafn argv [1] 15 00:00:51,860 --> 00:00:53,050 allt the hvíla af the program. 16 00:00:53,050 --> 00:00:55,570 Og kannski við munum gleyma hvað það þýðir og svo framvegis. 17 00:00:55,570 --> 00:00:57,830 Leitarorð er miklu betri nafn. 18 00:00:57,830 --> 00:01:01,982 Og við munum þegar í stað grípa lengd leitarorð okkar hérna. 19 00:01:01,982 --> 00:01:07,460 >> OK, svo nú viljum við athuga hvort leitarorð okkar er í raun í gildi. 20 00:01:07,460 --> 00:01:11,250 Leitarorðið sem við notum til að dulkóða strengi ætti bara að vera í stafrófsröð 21 00:01:11,250 --> 00:01:12,400 stafir. 22 00:01:12,400 --> 00:01:16,830 Ef notandinn slær inn ekki stafrófsröð stafir, ættum við að segja, leitarorð 23 00:01:16,830 --> 00:01:20,170 má aðeins innihalda gegnum Z og síðan heim aftur. 24 00:01:20,170 --> 00:01:24,370 Svo þetta fyrir lykkja iterates yfir allt stafina leitarorð okkar, stöðva 25 00:01:24,370 --> 00:01:31,870 að ef maður er ekki í stafrófsröð þá við þurfum að prenta þessi viðvörun. 26 00:01:31,870 --> 00:01:36,285 >> Nú, þegar við að fá að þessum tímapunkti, við vitum að strengurinn verður að vera rétt. 27 00:01:36,285 --> 00:01:38,230 Leitarorðið verður að vera rétt. 28 00:01:38,230 --> 00:01:40,880 Og nú þurfum við að fá skilaboð frá notandinn sem þeir vilja okkur til að 29 00:01:40,880 --> 00:01:43,910 dulkóða með þessi lykill setningu. 30 00:01:43,910 --> 00:01:46,780 Svo til að fá þessi skilaboð, þá erum við með gera á meðan lykkja sem er að fara til 31 00:01:46,780 --> 00:01:52,650 stöðugt fá band frá notanda fyrr en þeir slá inn gilt band. 32 00:01:52,650 --> 00:01:58,690 >> Endurmenntun, sjáum við hér þessa breytu, Int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Við munum sjá hvers vegna við þurfum að á sekúndu. 34 00:02:01,300 --> 00:02:07,320 En þetta fyrir lykkja er að fara að iterate frá ég jafngildir 0 alla leið upp til i 35 00:02:07,320 --> 00:02:10,940 jafngildir n, sem þýðir að við erum iterating yfir allt mögulegt 36 00:02:10,940 --> 00:02:13,020 stafir í skilaboðum okkar. 37 00:02:13,020 --> 00:02:17,370 Vegna þess að við viljum að dulkóða alla stafir í skilaboðum okkar. 38 00:02:17,370 --> 00:02:22,970 Svo taka við að gera ef (isalphamessage [I], vegna þess að við viljum ekki að dulkóða 39 00:02:22,970 --> 00:02:25,660 stafir sem eru ekki í stafrófsröð. 40 00:02:25,660 --> 00:02:28,810 Ef það eru tákn, bil, eða tölur, við gerum ekki 41 00:02:28,810 --> 00:02:30,730 vilt að dulkóða þær. 42 00:02:30,730 --> 00:02:37,220 >> Nú, miðað við að það er stafrófsröð, við viljum fyrst að reikna út hvað við 43 00:02:37,220 --> 00:02:40,890 raunverulega vilt að dulkóða skilaboðin með. 44 00:02:40,890 --> 00:02:42,710 Svo hvað ég meina með því? 45 00:02:42,710 --> 00:02:46,740 >> Skulum gera ráð fyrir að lykillinn setningu notandinn slegið var abc. 46 00:02:46,740 --> 00:02:49,070 Það er það sem við erum að nota til að dulkóða. 47 00:02:49,070 --> 00:02:54,850 Nú, naively, held að við sem þýðir að við viljum að dulkóða fyrsta staf 48 00:02:54,850 --> 00:02:59,740 af skilaboðum okkar um 0, þar sem leið snúa staf um 0. 49 00:02:59,740 --> 00:03:04,395 >> Við viljum að dulkóða annað karakter um 1, þriðja persóna með 2, 50 00:03:04,395 --> 00:03:09,170 fjórða staf með 0, fimmta um 1, sjötta með 2, og svo framvegis. 51 00:03:09,170 --> 00:03:14,440 En mundu, að við viljum sleppa rými og tákn og númer. 52 00:03:14,440 --> 00:03:21,520 Þetta þýðir að ef notandinn hafði slegið Halló heimur sem skilaboðin 53 00:03:21,520 --> 00:03:26,590 sem þeir vilja til að dulkóða, þá við viljum að dulkóða h með 0 54 00:03:26,590 --> 00:03:32,680 sem svarar til A, er e út fyrir 1, sem L með 2, L af 0, o um 1. 55 00:03:32,680 --> 00:03:41,050 Við viljum sleppa rými, brengla w af 2, o um 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Svo taka eftir, ef við hefðum ekki sleppt því rúm, þá myndum við hafa dulkóðuð 57 00:03:45,250 --> 00:03:51,240 w af 0 og endaði með The rangur band. 58 00:03:51,240 --> 00:03:57,470 >> OK, þetta er það sem við þurfum að breyta num_letters_seen fyrir. 59 00:03:57,470 --> 00:04:04,450 Ef við værum bara að fara að dulkóða með Þessi aðferð, sem ekki sleppa 60 00:04:04,450 --> 00:04:09,860 tákn, bil og tölur, þá erum við gæti bara notað breyta ég eins og hvað 61 00:04:09,860 --> 00:04:12,540 að kemba í helstu setningu okkar við. 62 00:04:12,540 --> 00:04:17,620 Við þurfum að nota num_letters_seen að halda lag af raunverulegu stað í 63 00:04:17,620 --> 00:04:21,146 lykill setningu sem við viljum að vísitölunni. 64 00:04:21,146 --> 00:04:32,240 Svo hér, ef leitarorðið sem við höfum, ef num_letter_seen unga fólkið keyword_length, svo 65 00:04:32,240 --> 00:04:34,570 hvers vegna þurfum við að unga fólkið eftir leitarorði lengd? 66 00:04:34,570 --> 00:04:36,630 >> Jæja, halló heimur var gott dæmi. 67 00:04:36,630 --> 00:04:42,310 Ef leitarorðið var abc, þá þurfum að stöðugt dulkóða af A þá B 68 00:04:42,310 --> 00:04:45,740 svo c, þá vefja til baka í kring, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Þannig að við þurfum að unga fólkið eftir leitarorði lengd í því skyni að vefja til baka í kring. 70 00:04:50,110 --> 00:04:57,280 >> Þannig að ef þetta er hástafi bréf, þá viljum við að dulkóða með því 71 00:04:57,280 --> 00:05:01,450 stöðu þess staf í stafrófinu, sem við fáum bara með 72 00:05:01,450 --> 00:05:06,730 draga út höfuðborg A. og Sömuleiðis fyrir lágstöfum, við 73 00:05:06,730 --> 00:05:13,000 hægt að fá lykilinn sem við viljum með því að draga út lágstafir a. 74 00:05:13,000 --> 00:05:16,910 Svo óháð því hvort bréf í helstu setningu var hlutafé eða 75 00:05:16,910 --> 00:05:21,640 lágstafir bréf, þá ætlum við að dulkóða um sömu fjárhæð. 76 00:05:21,640 --> 00:05:28,680 >> Nú þegar við höfum lykilinn okkar, sjáum við hér, að ef skilaboðin sem ég er með hástaf 77 00:05:28,680 --> 00:05:32,660 eðli, þá viljum við að reikna staða í stafrófinu á að 78 00:05:32,660 --> 00:05:39,460 eðli, bæta lykill okkar að það, vefja baka kring svo að ef við fórum framhjá 79 00:05:39,460 --> 00:05:43,170 z við förum aftur til a, b, c, og svo framvegis. 80 00:05:43,170 --> 00:05:49,070 Þá loks bæta aftur á höfuðborg A. Svo við vakt aftur í [? ASCII?] 81 00:05:49,070 --> 00:05:52,010 svið af þessum stöfum í stað þess að tölustafir staða í stafrófinu 82 00:05:52,010 --> 00:05:53,540 af þessum persónum. 83 00:05:53,540 --> 00:05:56,610 >> Og við gerum það sama fyrir lágstafi. 84 00:05:56,610 --> 00:06:00,070 Nema við viljum draga út lágstafir a og bæta það aftur á í 85 00:06:00,070 --> 00:06:02,900 endir, lágstafir a. 86 00:06:02,900 --> 00:06:08,120 Takið eftir að num_letter_seen er aðeins hækkuð ef skilaboðin sem ég var 87 00:06:08,120 --> 00:06:09,640 stafrófsröð. 88 00:06:09,640 --> 00:06:15,790 Þetta er hvernig við sleppa rými, tákn og tölur í helstu setningu okkar, þar 89 00:06:15,790 --> 00:06:20,520 num_letter_seen er það sem við erum að nota til vísitölu inn leitarorð okkar. 90 00:06:20,520 --> 00:06:24,540 >> Að lokum, í lok, nú þegar skilaboð Ég hefur verið dulkóðuð, við 91 00:06:24,540 --> 00:06:26,280 prenta út skilaboðin i. 92 00:06:26,280 --> 00:06:27,890 Og það er það. 93 00:06:27,890 --> 00:06:28,670 Mitt nafn er Rob. 94 00:06:28,670 --> 00:06:31,020 Og þetta er Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Tónlist spila] 96 00:06:32,850 --> 00:06:36,651