1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Ahoj, já jsem Rob, a pojďme dešifrovat programu Vigenere. 3 00:00:16,980 --> 00:00:21,180 Takže první věc, kterou musíme udělat, je Ujistěte se, že uživatel zadal, co jsme očekávali 4 00:00:21,180 --> 00:00:23,240 aby na příkazovém řádku. 5 00:00:23,240 --> 00:00:28,720 Takže pokud argc není 2 to znamená, že buď uživatel nezadal řetězec my 6 00:00:28,720 --> 00:00:31,780 chcete používat jako náš šifrování řetězec, nebo se 7 00:00:31,780 --> 00:00:32,890 zadali příliš mnoho věcí. 8 00:00:32,890 --> 00:00:35,130 A nevíme, co dělat s těmito dalšími věcmi. 9 00:00:35,130 --> 00:00:37,960 >> Tak jsme jim říct, co se měly vstoupit. 10 00:00:37,960 --> 00:00:39,300 A my jsme se vrátit. 11 00:00:39,300 --> 00:00:44,570 Nyní, za předpokladu, že argc je 2, můžeme pokračovat se zbytkem programu. 12 00:00:44,570 --> 00:00:47,890 >> Jsme alias název argv [1] 13 00:00:47,890 --> 00:00:49,750 do proměnné klíčové slovo. 14 00:00:49,750 --> 00:00:51,860 Takže nemáme na používat název argv [1] 15 00:00:51,860 --> 00:00:53,050 po zbytek programu. 16 00:00:53,050 --> 00:00:55,570 A možná budeme zapomenout na to, co to znamená, že, a tak dále. 17 00:00:55,570 --> 00:00:57,830 Klíčové slovo je mnohem hezčí jméno. 18 00:00:57,830 --> 00:01:01,982 A budeme hned chytit délku našeho klíčového slova tady. 19 00:01:01,982 --> 00:01:07,460 >> OK, tak teď chceme zkontrolovat, zda naše klíčové slovo je ve skutečnosti platí. 20 00:01:07,460 --> 00:01:11,250 Klíčové slovo, které používáme k zašifrování řetězce by měl být jen abecedy 21 00:01:11,250 --> 00:01:12,400 znaky. 22 00:01:12,400 --> 00:01:16,830 Je-li uživatel zadal non-abecední znaky, měli bychom říci, klíčové slovo 23 00:01:16,830 --> 00:01:20,170 musí obsahovat pouze průchozí Z a pak se vrátit. 24 00:01:20,170 --> 00:01:24,370 Takže to pro smyčky iteruje přes všechny znaky našeho klíčového slova, kontrolu 25 00:01:24,370 --> 00:01:31,870 že pokud jeden není abecední pak musíme vytisknout tento varování. 26 00:01:31,870 --> 00:01:36,285 >> Nyní, jakmile se dostaneme do tohoto bodu, víme, že řetězec musí být správné. 27 00:01:36,285 --> 00:01:38,230 Klíčové slovo musí být správné. 28 00:01:38,230 --> 00:01:40,880 A teď musíme dostat zprávu od uživatel, který nás chce 29 00:01:40,880 --> 00:01:43,910 šifrování s tímto klíčové fráze. 30 00:01:43,910 --> 00:01:46,780 Takže si tu zprávu, máme dělat, zatímco smyčka, co se děje na 31 00:01:46,780 --> 00:01:52,650 neustále se řetězec od uživatele dokud nevstoupí platný řetězec. 32 00:01:52,650 --> 00:01:58,690 >> Pokračování, zde vidíme tuto proměnnou, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Uvidíme, proč potřebujeme že ve vteřině. 34 00:02:01,300 --> 00:02:07,320 To pro smyčce se ale bude iterovat od i rovná 0 po celou cestu až do i 35 00:02:07,320 --> 00:02:10,940 se rovná n, což znamená, že jsme iterace přes všechny možné 36 00:02:10,940 --> 00:02:13,020 znaky v naší zprávě. 37 00:02:13,020 --> 00:02:17,370 Protože chceme zašifrovat všechny postavy v naší zprávě. 38 00:02:17,370 --> 00:02:22,970 Takže všimnete, co děláme, pokud (isalphamessage [I], protože nechceme, aby šifrování 39 00:02:22,970 --> 00:02:25,660 znaky, které nejsou podle abecedy. 40 00:02:25,660 --> 00:02:28,810 Pokud jsou symboly, mezery, nebo čísla, my ne 41 00:02:28,810 --> 00:02:30,730 chcete zašifrovat ty. 42 00:02:30,730 --> 00:02:37,220 >> Nyní, za předpokladu, že je abecední, jsme se poprvé chtějí zjistit, co se 43 00:02:37,220 --> 00:02:40,890 vlastně chcete zašifrovat Zpráva pomocí. 44 00:02:40,890 --> 00:02:42,710 Takže to, co mám na mysli, že? 45 00:02:42,710 --> 00:02:46,740 >> Předpokládejme, že klíčové fráze uživatel zadal byl abc. 46 00:02:46,740 --> 00:02:49,070 To je to, co jsme pomocí šifrování. 47 00:02:49,070 --> 00:02:54,850 Nyní, naivně se domníváme, to znamená, že chceme zašifrovat první znak 48 00:02:54,850 --> 00:02:59,740 naší zprávy o 0, protože prostředek otáčením znak 0. 49 00:02:59,740 --> 00:03:04,395 >> Chceme zašifrovat druhý znak o 1, třetí znak o 2, 50 00:03:04,395 --> 00:03:09,170 čtvrtý znak od 0, pátý o 1, šestý o 2, a tak dále. 51 00:03:09,170 --> 00:03:14,440 Ale pamatujte, že chceme přeskočit mezery a symboly a čísla. 52 00:03:14,440 --> 00:03:21,520 To znamená, že kdyby vstoupil uživatele hello world jako zpráva 53 00:03:21,520 --> 00:03:26,590 které chcete zašifrovat, pak chceme šifrovat h od 0 54 00:03:26,590 --> 00:03:32,680 odpovídající a, e o 1, l o 2, l o 0, o které jeden. 55 00:03:32,680 --> 00:03:41,050 Chceme přeskočit prostor, šifrovaná w o 2, o o 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Takže všimnout, kdybychom přeskočili prostor, pak bychom šifrována 57 00:03:45,250 --> 00:03:51,240 w od 0 a skončil s nesprávný řetězec. 58 00:03:51,240 --> 00:03:57,470 >> OK, to je to, co potřebujeme proměnnou num_letters_seen pro. 59 00:03:57,470 --> 00:04:04,450 Pokud bychom se právě chystá na šifrování pomocí Tato metoda, která nemá přeskočit 60 00:04:04,450 --> 00:04:09,860 symboly, mezery, a čísla, pak mohl použít proměnnou i jako to, co 61 00:04:09,860 --> 00:04:12,540 index do naší klíčové fráze se. 62 00:04:12,540 --> 00:04:17,620 Musíme využít num_letters_seen, aby stopa na skutečné místo v 63 00:04:17,620 --> 00:04:21,146 klíčové fráze, které chceme do indexu. 64 00:04:21,146 --> 00:04:32,240 Tak tady, pokud klíčové slovo máme, pokud num_letter_seen mod keyword_length, tak 65 00:04:32,240 --> 00:04:34,570 Proč musíme mod podle délky klíčového slova? 66 00:04:34,570 --> 00:04:36,630 >> No, ahoj svět byl dobrým příkladem. 67 00:04:36,630 --> 00:04:42,310 Je-li klíčové slovo bylo abc, pak musíme průběžně šifrovat by pak b 68 00:04:42,310 --> 00:04:45,740 pak c, pak zabalit zpět kolem, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Takže musíme mod podle délky klíčového slova aby se zabalit zpět kolem. 70 00:04:50,110 --> 00:04:57,280 >> Takže pokud to je velké písmeno, pak chceme zašifrovat pomocí 71 00:04:57,280 --> 00:05:01,450 postavení tohoto dopisu v abecedě, které jsme se jen o 72 00:05:01,450 --> 00:05:06,730 odečtením z kapitálového A. A podobně, pro malá písmena, jsme 73 00:05:06,730 --> 00:05:13,000 lze získat klíč, který chceme pomocí odečte se malá písmena A. 74 00:05:13,000 --> 00:05:16,910 Takže bez ohledu na to, zda je písmeno v klíčové fráze byla kapitálu nebo 75 00:05:16,910 --> 00:05:21,640 malé písmeno, budeme šifrovat o stejnou částku. 76 00:05:21,640 --> 00:05:28,680 >> Teď, když máme klíč, vidíme zde, že pokud zpráva i je velká 77 00:05:28,680 --> 00:05:32,660 charakter, pak chceme vypočítat pozice v abecedě, které 78 00:05:32,660 --> 00:05:39,460 charakter, přidat náš klíč k tomu, zabalit zpět asi tak, že když jsme šli kolem 79 00:05:39,460 --> 00:05:43,170 z vrátíme k a, b, c, a tak dále. 80 00:05:43,170 --> 00:05:49,070 Pak, konečně, přidat zpět na kapitálovém A. Takže jsme se přesunout zpět do [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 řada z těchto znaků namísto číselné pozice v abecedě 82 00:05:52,010 --> 00:05:53,540 z těchto znaků. 83 00:05:53,540 --> 00:05:56,610 >> A děláme to samé pro malými písmeny. 84 00:05:56,610 --> 00:06:00,070 Kromě chceme odečíst z malými písmeny a přidat zpět v 85 00:06:00,070 --> 00:06:02,900 konec, malá písmena. 86 00:06:02,900 --> 00:06:08,120 Všimněte si, že num_letter_seen je pouze zvýší-li zprávu jsem byl 87 00:06:08,120 --> 00:06:09,640 podle abecedy. 88 00:06:09,640 --> 00:06:15,790 To je, jak jsme se přeskočit mezery, symboly, a Čísla v naší klíčové fráze, protože 89 00:06:15,790 --> 00:06:20,520 num_letter_seen je to, co jsme pomocí index do našeho klíčového slova. 90 00:06:20,520 --> 00:06:24,540 >> A konečně, na konci, teď, že zpráva i bylo zakódováno, jsme 91 00:06:24,540 --> 00:06:26,280 vytisknout zprávu. 92 00:06:26,280 --> 00:06:27,890 A to je vše. 93 00:06:27,890 --> 00:06:28,670 Jmenuji se Rob. 94 00:06:28,670 --> 00:06:31,020 A to je Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIC PŘEHRÁVÁNÍ] 96 00:06:32,850 --> 00:06:36,651