1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Ahoj, ja som Rob, a poďme dešifrovať programu Vigenère. 3 00:00:16,980 --> 00:00:21,180 Takže prvá vec, ktorú musíme urobiť, je Uistite sa, že užívateľ zadal, čo sme očakávali 4 00:00:21,180 --> 00:00:23,240 aby na príkazovom riadku. 5 00:00:23,240 --> 00:00:28,720 Takže ak argc nie 2 to znamená, že buď používateľ neuviedol reťazec my 6 00:00:28,720 --> 00:00:31,780 chcete používať ako náš šifrovanie reťazec, alebo sa 7 00:00:31,780 --> 00:00:32,890 zadali príliš veľa vecí. 8 00:00:32,890 --> 00:00:35,130 A nevieme, čo robiť s týmito ďalšími vecami. 9 00:00:35,130 --> 00:00:37,960 >> Tak sme im povedať, čo sa mali vstúpiť. 10 00:00:37,960 --> 00:00:39,300 A my sme sa vrátiť. 11 00:00:39,300 --> 00:00:44,570 Teraz, za predpokladu, že argc je 2, môžeme pokračovať so zvyškom programu. 12 00:00:44,570 --> 00:00:47,890 >> Sme alias názov argv [1] 13 00:00:47,890 --> 00:00:49,750 do premennej kľúčové slovo. 14 00:00:49,750 --> 00:00:51,860 Takže nemáme na používať názov argv [1] 15 00:00:51,860 --> 00:00:53,050 po zvyšok programu. 16 00:00:53,050 --> 00:00:55,570 A možno budeme zabudnúť na to, čo to znamená, že, a tak ďalej. 17 00:00:55,570 --> 00:00:57,830 Kľúčové slovo je oveľa krajší meno. 18 00:00:57,830 --> 00:01:01,982 A budeme hneď chytiť dĺžku nášho kľúčového slova tu. 19 00:01:01,982 --> 00:01:07,460 >> OK, tak teraz chceme skontrolovať, či naše kľúčové slovo je v skutočnosti platí. 20 00:01:07,460 --> 00:01:11,250 Kľúčové slovo, ktoré používame na zašifrovanie reťazca by mal byť len abecedy 21 00:01:11,250 --> 00:01:12,400 znaky. 22 00:01:12,400 --> 00:01:16,830 Je-li užívateľ zadal non-abecedný znaky, mali by sme povedať, kľúčové slovo 23 00:01:16,830 --> 00:01:20,170 musí obsahovať iba priechodná Z a potom sa vrátiť. 24 00:01:20,170 --> 00:01:24,370 Takže to pre slučky iteruje cez všetky znaky nášho kľúčového slova, kontrolu 25 00:01:24,370 --> 00:01:31,870 že ak jeden nie je abecedný potom musíme vytlačiť tento varovanie. 26 00:01:31,870 --> 00:01:36,285 >> Teraz, akonáhle sa dostaneme do tohto bodu, vieme, že reťazec musí byť správne. 27 00:01:36,285 --> 00:01:38,230 Kľúčové slovo musí byť správne. 28 00:01:38,230 --> 00:01:40,880 A teraz musíme dostať správu od užívateľ, ktorý nás chce 29 00:01:40,880 --> 00:01:43,910 šifrovanie s týmto kľúčové frázy. 30 00:01:43,910 --> 00:01:46,780 Takže si tú správu, máme robiť, kým slučka, čo sa deje na 31 00:01:46,780 --> 00:01:52,650 neustále sa reťazec od užívateľa kým nevstúpi platný reťazec. 32 00:01:52,650 --> 00:01:58,690 >> Pokračovanie, tu vidíme túto premennú, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Uvidíme, prečo potrebujeme že v sekunde. 34 00:02:01,300 --> 00:02:07,320 To pre slučke sa ale bude iterovat od i rovná 0 po celú cestu až do i 35 00:02:07,320 --> 00:02:10,940 sa rovná n, čo znamená, že sme iterácie cez všetky možné 36 00:02:10,940 --> 00:02:13,020 znaky v našej správe. 37 00:02:13,020 --> 00:02:17,370 Pretože chceme zašifrovať všetky postavy v našej správe. 38 00:02:17,370 --> 00:02:22,970 Takže všimnete, čo robíme, ak (isalphamessage [I], pretože nechceme, aby šifrovanie 39 00:02:22,970 --> 00:02:25,660 znaky, ktoré nie sú podľa abecedy. 40 00:02:25,660 --> 00:02:28,810 Ak sú symboly, medzery, alebo čísla, my nie 41 00:02:28,810 --> 00:02:30,730 chcete zašifrovať ty. 42 00:02:30,730 --> 00:02:37,220 >> Teraz, za predpokladu, že je abecedný, sme sa prvýkrát chcú zistiť, čo sa 43 00:02:37,220 --> 00:02:40,890 vlastne chcete zašifrovať Správa pomocou. 44 00:02:40,890 --> 00:02:42,710 Takže to, čo mám na mysli, že? 45 00:02:42,710 --> 00:02:46,740 >> Predpokladajme, že kľúčové frázy užívateľ zadal bol abc. 46 00:02:46,740 --> 00:02:49,070 To je to, čo sme pomocou šifrovania. 47 00:02:49,070 --> 00:02:54,850 Teraz, naivne sa domnievame, to znamená, že chceme zašifrovať prvý znak 48 00:02:54,850 --> 00:02:59,740 našej správy o 0, pretože prostriedok otáčaním znak 0. 49 00:02:59,740 --> 00:03:04,395 >> Chceme zašifrovať druhý znak o 1, tretí znak o 2, 50 00:03:04,395 --> 00:03:09,170 štvrtý znak od 0, piaty o 1, šiesty o 2, a tak ďalej. 51 00:03:09,170 --> 00:03:14,440 Ale pamätajte, že chceme preskočiť medzery a symboly a čísla. 52 00:03:14,440 --> 00:03:21,520 To znamená, že keby vstúpil užívateľa hello world ako správa 53 00:03:21,520 --> 00:03:26,590 ktoré chcete zašifrovať, potom chceme šifrovať h od 0 54 00:03:26,590 --> 00:03:32,680 zodpovedajúce a, e o 1, l o 2, l o 0, o ktoré jeden. 55 00:03:32,680 --> 00:03:41,050 Chceme preskočiť priestor, šifrované w o 2, o o 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Takže všimnúť, keby sme preskočili priestor, potom by sme šifrovaná 57 00:03:45,250 --> 00:03:51,240 w od 0 a skončil s nesprávny reťazec. 58 00:03:51,240 --> 00:03:57,470 >> OK, to je to, čo potrebujeme premennú num_letters_seen pre. 59 00:03:57,470 --> 00:04:04,450 Ak by sme sa práve chystá na šifrovanie pomocou Táto metóda, ktorá nemá preskočiť 60 00:04:04,450 --> 00:04:09,860 symboly, medzery, a čísla, potom mohol použiť premennú aj ako to, čo 61 00:04:09,860 --> 00:04:12,540 index do našej kľúčové frázy sa. 62 00:04:12,540 --> 00:04:17,620 Musíme využiť num_letters_seen, aby stopa na skutočné miesto v 63 00:04:17,620 --> 00:04:21,146 kľúčové frázy, ktoré chceme do indexu. 64 00:04:21,146 --> 00:04:32,240 Tak tu, ak kľúčové slovo máme, ak num_letter_seen mod keyword_length, tak 65 00:04:32,240 --> 00:04:34,570 Prečo musíme mod podľa dĺžky kľúčového slova? 66 00:04:34,570 --> 00:04:36,630 >> No, ahoj svet bol dobrým príkladom. 67 00:04:36,630 --> 00:04:42,310 Je-li kľúčové slovo bolo abc, potom musíme priebežne šifrovať by potom b 68 00:04:42,310 --> 00:04:45,740 potom c, potom zabaliť späť okolo, a, b, c, a, b, c 69 00:04:45,740 --> 00:04:50,110 Takže musíme mod podľa dĺžky kľúčového slova aby sa zabaliť späť okolo. 70 00:04:50,110 --> 00:04:57,280 >> Takže ak to je veľké písmeno, potom chceme zašifrovať pomocou 71 00:04:57,280 --> 00:05:01,450 postavenie tohto listu v abecede, ktoré sme sa len o 72 00:05:01,450 --> 00:05:06,730 odpočítaním z kapitálového A. A podobne, pre malé písmená, sme 73 00:05:06,730 --> 00:05:13,000 možno získať kľúč, ktorý chceme pomocou odpočíta sa malé písmená A. 74 00:05:13,000 --> 00:05:16,910 Takže bez ohľadu na to, či je písmeno v kľúčové frázy bola kapitálu alebo 75 00:05:16,910 --> 00:05:21,640 malé písmeno, budeme šifrovať o rovnakú sumu. 76 00:05:21,640 --> 00:05:28,680 >> Teraz, keď máme kľúč, vidíme tu, že ak správa aj je veľká 77 00:05:28,680 --> 00:05:32,660 charakter, potom chceme vypočítať pozície v abecede, ktoré 78 00:05:32,660 --> 00:05:39,460 charakter, pridať náš kľúč k tomu, zabaliť späť asi tak, že keď sme išli okolo 79 00:05:39,460 --> 00:05:43,170 z vrátime k a, b, c, a tak ďalej. 80 00:05:43,170 --> 00:05:49,070 Potom, konečne, pridať späť na kapitálovom A. Takže sme sa presunúť späť do [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 mnohé z týchto znakov namiesto číselné pozície v abecede 82 00:05:52,010 --> 00:05:53,540 z týchto znakov. 83 00:05:53,540 --> 00:05:56,610 >> A robíme to isté pre malými písmenami. 84 00:05:56,610 --> 00:06:00,070 Okrem chceme odpočítať z malými písmenami a pridať späť v 85 00:06:00,070 --> 00:06:02,900 koniec, malé písmená. 86 00:06:02,900 --> 00:06:08,120 Všimnite si, že num_letter_seen je iba zvýši chcete správu som bol 87 00:06:08,120 --> 00:06:09,640 podľa abecedy. 88 00:06:09,640 --> 00:06:15,790 To je, ako sme sa preskočiť medzery, symboly, a Čísla v našej kľúčové frázy, pretože 89 00:06:15,790 --> 00:06:20,520 num_letter_seen je to, čo sme pomocou index do nášho kľúčového slova. 90 00:06:20,520 --> 00:06:24,540 >> A konečne, na konci, teraz, že správa i bolo zakódované, sme 91 00:06:24,540 --> 00:06:26,280 vytlačiť správu. 92 00:06:26,280 --> 00:06:27,890 A to je všetko. 93 00:06:27,890 --> 00:06:28,670 Volám sa Rob. 94 00:06:28,670 --> 00:06:31,020 A to je Vigenère. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIC PLAYBACK] 96 00:06:32,850 --> 00:06:36,651