1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Sveiki, aš esu Robas, ir tegul iššifruoti Vigenere programa. 3 00:00:16,980 --> 00:00:21,180 Taigi pirmas dalykas, kurį reikia padaryti, tai tikras vartotojas įves tikėjomės 4 00:00:21,180 --> 00:00:23,240 juos į komandų eilutę. 5 00:00:23,240 --> 00:00:28,720 Taigi, jei argc nėra 2 tai reiškia, kad arba vartotojas neįtraukė eilutę mes 6 00:00:28,720 --> 00:00:31,780 nori būti naudojant kaip mūsų šifravimo eilutę, ar jie 7 00:00:31,780 --> 00:00:32,890 Buvo per daug dalykų. 8 00:00:32,890 --> 00:00:35,130 Ir mes nežinome, ką daryti su tų kitų dalykų. 9 00:00:35,130 --> 00:00:37,960 >> Taigi, mes pasakyti jiems, ką jie turėtų būti įrašytas. 10 00:00:37,960 --> 00:00:39,300 Ir mes grįžtame. 11 00:00:39,300 --> 00:00:44,570 Dabar, darant prielaidą, kad argc buvo 2, mes galime tęsti programos dalimi. 12 00:00:44,570 --> 00:00:47,890 >> Mes slapyvardžius į argv pavadinimas [1] 13 00:00:47,890 --> 00:00:49,750 į kintamojo raktinį žodį. 14 00:00:49,750 --> 00:00:51,860 Taigi, kad mes neturime naudoti pavadinimą argv [1] 15 00:00:51,860 --> 00:00:53,050 visoje programos dalimi. 16 00:00:53,050 --> 00:00:55,570 O gal mes pamiršti, ką tai reiškia, kad ir taip toliau. 17 00:00:55,570 --> 00:00:57,830 Raktažodis yra daug gražiau pavadinimas. 18 00:00:57,830 --> 00:01:01,982 Ir mes iš karto patraukti ilgis mūsų raktinį žodį čia. 19 00:01:01,982 --> 00:01:07,460 >> Gerai, kad dabar mes norime patikrinti, mūsų žodis yra iš tikrųjų galioja. 20 00:01:07,460 --> 00:01:11,250 Raktažodis mes naudojame užšifruoti stygos turėtų būti tik abėcėlės tvarka 21 00:01:11,250 --> 00:01:12,400 simbolių. 22 00:01:12,400 --> 00:01:16,830 Jei vartotojas įveda Neabėcėliniams ženklai, turėtume pasakyti, raktinis žodis 23 00:01:16,830 --> 00:01:20,170 turi būti tik gražų Z ir tada grįžti. 24 00:01:20,170 --> 00:01:24,370 Taigi tai dėl Ciklas per visus simbolių mūsų raktažodį, tikrinimo 25 00:01:24,370 --> 00:01:31,870 kad jei vienas nėra abėcėlės tada mums reikia spausdinti tą įspėjimą. 26 00:01:31,870 --> 00:01:36,285 >> Dabar, kai mes turime šiuo metu, mes žinome, kad seka turi būti teisinga. 27 00:01:36,285 --> 00:01:38,230 Raktažodis turi būti teisinga. 28 00:01:38,230 --> 00:01:40,880 Ir dabar mes turime gauti pranešimą iš vartotojo, kad jie nori mums 29 00:01:40,880 --> 00:01:43,910 užšifruoti su šios pagrindinės frazę. 30 00:01:43,910 --> 00:01:46,780 Taigi, norint gauti šią žinią, turime do while cikle, kad ketina 31 00:01:46,780 --> 00:01:52,650 nuolat gauti eilutę iš vartotojo kol jie įvesti galiojantį eilutę. 32 00:01:52,650 --> 00:01:58,690 >> Tęstinis, matome čia šį kintamąjį, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Pamatysime, kodėl mes turime kad per sekundę. 34 00:02:01,300 --> 00:02:07,320 Bet tai už linijos ketina pakartoti nuo I lygus 0 visą kelią iki i 35 00:02:07,320 --> 00:02:10,940 Lygu n, o tai reiškia, mes Iteracja per visas įmanomas 36 00:02:10,940 --> 00:02:13,020 simbolių mūsų pranešimo. 37 00:02:13,020 --> 00:02:17,370 Kadangi mes norime užšifruoti visus su mūsų pranešimo simbolių. 38 00:02:17,370 --> 00:02:22,970 Taigi pastebėti mes, jei (isalphamessage [Turiu] nes mes nenorime, užšifruoti 39 00:02:22,970 --> 00:02:25,660 ženklai, kurie nėra abėcėlės. 40 00:02:25,660 --> 00:02:28,810 Jei yra simbolių, tarpų, arba numerius, mes ne 41 00:02:28,810 --> 00:02:30,730 norite šifruoti tų. 42 00:02:30,730 --> 00:02:37,220 >> Dabar, darant prielaidą, kad ji yra abėcėlinis, mes pirmiausia norime išsiaiškinti, ką mes 43 00:02:37,220 --> 00:02:40,890 iš tikrųjų norite užšifruoti pranešimas, naudojant. 44 00:02:40,890 --> 00:02:42,710 Taigi, ką aš turiu galvoje, kad? 45 00:02:42,710 --> 00:02:46,740 >> Tarkime, kad pagrindinis frazės vartotojo Įvestas abc. 46 00:02:46,740 --> 00:02:49,070 Štai ką mes naudojame, norėdami šifruoti. 47 00:02:49,070 --> 00:02:54,850 Dabar naiviai manome, kad tai reiškia, kad norime užšifruoti pirmąjį simbolį 48 00:02:54,850 --> 00:02:59,740 Mūsų Praneðimas 0, nes priemonės sukant charakterį 0. 49 00:02:59,740 --> 00:03:04,395 >> Mes norime užšifruoti antrą simbolį 1, trečiasis simbolis 2, 50 00:03:04,395 --> 00:03:09,170 Ketvirtasis požymis 0, penkta 1, 2 šešta, ir pan. 51 00:03:09,170 --> 00:03:14,440 Bet atsiminkite, kad mes norime praleisti erdvės ir simboliai ir numeriai. 52 00:03:14,440 --> 00:03:21,520 Tai reiškia, kad jei vartotojas buvo įrašytas hello world kaip pranešimą 53 00:03:21,520 --> 00:03:26,590 kad jie nori užšifruoti, tada norime užšifruoti h iki 0 54 00:03:26,590 --> 00:03:32,680 atitinkanti a, e 1, l 2, iki 0 l iki 1 °. 55 00:03:32,680 --> 00:03:41,050 Mes norime praleisti vietos, saugiame iki 2 m, 0, 1, 2, 0, o. 56 00:03:41,050 --> 00:03:45,250 Taigi pastebėti, jei nebūtume praleisti erdvę, tada būtume užkoduota 57 00:03:45,250 --> 00:03:51,240 iki 0 W ir galų gale su neteisingas eilutę. 58 00:03:51,240 --> 00:03:57,470 >> Gerai, tai, ką mes turime kintamąjį num_letters_seen už. 59 00:03:57,470 --> 00:04:04,450 Jei mes tik ketina šifruoti naudojant šis metodas, kuris neturi praleisti 60 00:04:04,450 --> 00:04:09,860 simbolių, tarpų ir skaičiai, tada mes galima tiesiog naudoti kintamąjį i kaip kas 61 00:04:09,860 --> 00:04:12,540 indeksuoti į mūsų pagrindinę frazę. 62 00:04:12,540 --> 00:04:17,620 Mums reikia naudoti num_letters_seen išlaikyti kelio į faktinę vietą, į 63 00:04:17,620 --> 00:04:21,146 pagrindinis frazės, kad mes norime indeksą. 64 00:04:21,146 --> 00:04:32,240 Taigi čia, jei raktažodis turime, jei num_letter_seen mod keyword_length, todėl 65 00:04:32,240 --> 00:04:34,570 kodėl mes turime mod pagal raktažodį ilgio? 66 00:04:34,570 --> 00:04:36,630 >> Na, labas pasaulis buvo geras pavyzdys. 67 00:04:36,630 --> 00:04:42,310 Jei raktažodis abc, tada mes turime nuolat šifruoti pagal tada b 68 00:04:42,310 --> 00:04:45,740 tada C, tada wrap atgal aplink, , b, c, b, c. 69 00:04:45,740 --> 00:04:50,110 Taigi mums reikia mod pagal raktažodį ilgio siekiant wrap atgal aplink. 70 00:04:50,110 --> 00:04:57,280 >> Taigi, jei tai didžiosios raidės, tada mes norime užšifruoti pagal 71 00:04:57,280 --> 00:05:01,450 pozicija tą abėcėlės raidė, kurios mes tiesiog 72 00:05:01,450 --> 00:05:06,730 atimant iš kapitalo A. ir Panašiai mažųjų raidžių, mes 73 00:05:06,730 --> 00:05:13,000 gali gauti raktą, kad mes norime, padarytais atimant iš mažosiomis raidėmis a. 74 00:05:13,000 --> 00:05:16,910 Taigi neatsižvelgiant į tai, ar laiškas į pagrindinių frazė buvo kapitalą arba 75 00:05:16,910 --> 00:05:21,640 mažoji raidė, mes ketiname užšifruoti ta pačia suma. 76 00:05:21,640 --> 00:05:28,680 >> Dabar, mes turime raktą, mes matome čia, kad jei pranešimą i didžiąsias 77 00:05:28,680 --> 00:05:32,660 simbolis, tai mes norime apskaičiuoti pozicija to abėcėlė 78 00:05:32,660 --> 00:05:39,460 pobūdis, pridėti savo raktą į jį, apvyniokite atgal maždaug taip, kad jei mes buvo praeityje 79 00:05:39,460 --> 00:05:43,170 z mes einame atgal į a, b, c, ir pan. 80 00:05:43,170 --> 00:05:49,070 Tada, pagaliau, vėl pridėti kapitalui A. Taigi mes perkelti atgal į [? ASCII?] 81 00:05:49,070 --> 00:05:52,010 diapazonas iš šių simbolių, o ne skaitmeninis pozicija abėcėlėje 82 00:05:52,010 --> 00:05:53,540 Šių simbolių. 83 00:05:53,540 --> 00:05:56,610 >> Ir mes tai darome tą patį dalyką mažosiomis raidėmis. 84 00:05:56,610 --> 00:06:00,070 Išskyrus norime atimti iš mažosiomis Pridėkite jį ir atgal į 85 00:06:00,070 --> 00:06:02,900 pabaigos, mažosiomis raidėmis. 86 00:06:02,900 --> 00:06:08,120 Atkreipkite dėmesį, kad num_letter_seen tik padidinamas, jei pranešimas buvau 87 00:06:08,120 --> 00:06:09,640 Abėcėlinis. 88 00:06:09,640 --> 00:06:15,790 Tai, kaip mes praleisti tarpai, simboliai ir numeriai mūsų pagrindinis frazės, nes 89 00:06:15,790 --> 00:06:20,520 num_letter_seen yra tai, ką mes naudojame indeksuoti į mūsų žodį. 90 00:06:20,520 --> 00:06:24,540 >> Galiausiai, galų gale, dabar tokia žinutė i buvo užšifruotas, mes 91 00:06:24,540 --> 00:06:26,280 spausdinti pranešimą i. 92 00:06:26,280 --> 00:06:27,890 Štai ir viskas. 93 00:06:27,890 --> 00:06:28,670 Mano vardas yra Rob. 94 00:06:28,670 --> 00:06:31,020 Ir tai Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Muzikavimo] 96 00:06:32,850 --> 00:06:36,651