1 00:00:00,000 --> 00:00:10,101 >> [Přehrávání hudby] 2 00:00:10,101 --> 00:00:12,700 >> ZAMYLA CHAN: Pojďme realizovat Vigenere, o něco více 3 00:00:12,700 --> 00:00:14,710 zajistit šifru, než Caesar. 4 00:00:14,710 --> 00:00:19,670 Prostý text zašifrován pomocí řetězec namísto celé číslo. 5 00:00:19,670 --> 00:00:22,970 Každý abecední znak prostý text posunut 6 00:00:22,970 --> 00:00:24,450 písmeno klíčového slova. 7 00:00:24,450 --> 00:00:30,860 >> V tomto příkladu, klíčové slovo Ohai, O odpovídá posunu 14, H na 8 00:00:30,860 --> 00:00:36,910 posun 7, A, posun 0, a já posunu 8. 9 00:00:36,910 --> 00:00:40,710 Pokud jste úspěšně realizovala svůj Caesarova šifra, bude to pěkné 10 00:00:40,710 --> 00:00:43,510 rámec, ze kterého mohou realizovat Vigenere. 11 00:00:43,510 --> 00:00:47,140 Jak můžete vidět, běh Vigenere šifra s jedním charakteru jako 12 00:00:47,140 --> 00:00:51,830 Klíčové slovo je totéž jako kód Caesar. 13 00:00:51,830 --> 00:00:55,170 >> Stejný postup platí pro Vigenere jako tomu bylo v Caesarovi. 14 00:00:55,170 --> 00:01:01,240 Klíčové slovo je druhý příkazového řádku Argument, takže k ní přistupovat s argv1. 15 00:01:01,240 --> 00:01:05,400 Poté je třeba ověřit, že klíč slovo je opravdu vše, abecední. 16 00:01:05,400 --> 00:01:09,040 Zde je místo, kde je alfa může přijít vhod. 17 00:01:09,040 --> 00:01:13,550 Pokud máte platný klíčové slovo, dostanete síla od uživatele, a pak 18 00:01:13,550 --> 00:01:15,820 jste připraveni zašifrovat. 19 00:01:15,820 --> 00:01:20,840 >> Šifra Vigenere vzorec je podobný Caesar se vzorci, s výjimkou nyní k 20 00:01:20,840 --> 00:01:27,650 se k dolní index j, což znamená, j-tý písmeno klíčového slova. 21 00:01:27,650 --> 00:01:29,640 Pojďme krok v rámci tohoto procesu. 22 00:01:29,640 --> 00:01:34,060 Řekněme, že jste chtěli poslat zprávu do havárie, mám tě rád, ale ne 23 00:01:34,060 --> 00:01:35,190 Chci, aby všichni věděli. 24 00:01:35,190 --> 00:01:39,800 Takže použít Vigenère kód s Klíčové slovo panda, protože, no, je také 25 00:01:39,800 --> 00:01:41,160 jako pandy. 26 00:01:41,160 --> 00:01:47,140 >> První dopis, budu se posune podle p, kdy X, 15 písmen co jsem, 27 00:01:47,140 --> 00:01:52,850 protože 15 p je 16. písmeno abecedy. 28 00:01:52,850 --> 00:01:56,750 Další písmeno ve formátu prostého textu je prostor, takže se nelze přesouvat. 29 00:01:56,750 --> 00:02:00,420 A index klíčového slova se nezmění. 30 00:02:00,420 --> 00:02:05,440 >> Pak další písmeno ve formátu prostého textu je l, posunuté o, která se neposune 31 00:02:05,440 --> 00:02:10,930 holý text dopisu vůbec, protože je 0. písmeno abecedy. 32 00:02:10,930 --> 00:02:14,980 Tento proces pokračuje, postupující Klíčové slovo znak pokaždé, když je 33 00:02:14,980 --> 00:02:16,840 dopis v prostém textu. 34 00:02:16,840 --> 00:02:21,850 Po poslední písmeno v klíčové slovo dosaženo, klíčové slovo se zalomí kolem a 35 00:02:21,850 --> 00:02:25,890 se přesune do dalšího pláni Text Dopis p.. 36 00:02:25,890 --> 00:02:27,170 X lvne noh. 37 00:02:27,170 --> 00:02:29,180 Jak romantické. 38 00:02:29,180 --> 00:02:33,120 >> Takže vzhledem charakter, jak si převést , že do příslušné 39 00:02:33,120 --> 00:02:34,590 Cipher posun? 40 00:02:34,590 --> 00:02:37,870 Zkuste porovnání ASCII hodnoty k posunu. 41 00:02:37,870 --> 00:02:41,530 Třeba u nás najdeš vztah mezi písmeny a jejich 42 00:02:41,530 --> 00:02:44,550 abecední rejstřík pomocí ASCII matematiky. 43 00:02:44,550 --> 00:02:48,850 Můžete přidat nebo ubrat jeden znak z jiného dostat 44 00:02:48,850 --> 00:02:51,630 jste požadovaný výsledek? 45 00:02:51,630 --> 00:02:55,480 >> Pamatujte si, že posuny pro velká a malá písmena jsou stejné. 46 00:02:55,480 --> 00:02:59,510 Takže možná budete muset identifikovat dva podobných vzorců představují 47 00:02:59,510 --> 00:03:03,570 posun, jeden pro velká Klíčové slovo znak, a jeden 48 00:03:03,570 --> 00:03:06,510 na malá písmena jeden. 49 00:03:06,510 --> 00:03:10,630 >> Dále nezapomeňte, že klíčové slovo zálohy pouze v případě, že znak 50 00:03:10,630 --> 00:03:13,520 holý text je dopis, a že případ prostý 51 00:03:13,520 --> 00:03:16,020 Text musí být zachována. 52 00:03:16,020 --> 00:03:20,280 Takže pokud se podíváme na vzorec pro Vigenere posun, jsou tam dva index 53 00:03:20,280 --> 00:03:22,880 proměnných i a j. 54 00:03:22,880 --> 00:03:26,795 Jeden udržuje postavení v obyčejný textu, a další pozice 55 00:03:26,795 --> 00:03:27,910 na klíčové slovo. 56 00:03:27,910 --> 00:03:32,960 Ale tvůj holý text může být mnohem delší než vaše klíčové slovo, v tom případě bude vaše 57 00:03:32,960 --> 00:03:38,290 Klíčové slovo index musí přetočit zpět na začátek klíčového slova. 58 00:03:38,290 --> 00:03:39,870 >> Jak to děláte? 59 00:03:39,870 --> 00:03:43,740 Podívejme se na modulo operátor. 60 00:03:43,740 --> 00:03:47,280 Modulo definován, zbytek dělení dvou čísel. 61 00:03:47,280 --> 00:03:50,680 Ale to, co je skutečné praktické použití modulo? 62 00:03:50,680 --> 00:03:54,340 >> No, řekněme, že máte velkou skupinu lidí, a vy třeba rozdělit do 63 00:03:54,340 --> 00:03:55,100 tří skupin. 64 00:03:55,100 --> 00:03:59,500 Jeden způsob, jak rozdělit lidi do skupin je nechat odpočítávat. 65 00:03:59,500 --> 00:04:03,520 Ty počet skupin skupinu číslo 1, 2, a 3.. 66 00:04:03,520 --> 00:04:08,510 První člověk řekne 1, další 2, 3 další. 67 00:04:08,510 --> 00:04:12,860 Osoba, po které se bude říkat: 1, protože není skupina 4, a 68 00:04:12,860 --> 00:04:15,880 Počet začíná znovu od tam. 69 00:04:15,880 --> 00:04:18,209 >> Můžete použít modulo se to samé. 70 00:04:18,209 --> 00:04:22,680 Tentokrát skupiny být skupina 0, 1, 2 a. 71 00:04:22,680 --> 00:04:26,960 První osoba, číslo 1 modulo 3, 1. 72 00:04:26,960 --> 00:04:29,830 Osoba 2 modulo 3 je 2. 73 00:04:29,830 --> 00:04:32,460 Osoba 3 modulo 3 je 0. 74 00:04:32,460 --> 00:04:38,470 Osoba 4 modulo 3 je 1, a tak skupiny může obtékat kolem. 75 00:04:38,470 --> 00:04:44,700 >> Takže pokud budete mít index a Modulo že index o maximální velikosti, 76 00:04:44,700 --> 00:04:49,820 Výsledkem bude nikdy být větší nebo , které odpovídá velikosti, což znamená, že 77 00:04:49,820 --> 00:04:52,330 může zvýšit index jako stejně jako byste chtěli. 78 00:04:52,330 --> 00:04:57,400 A jak dlouho budete modulo index nějaké číslo, nebudete získat řadu 79 00:04:57,400 --> 00:04:58,510 větší, než je. 80 00:04:58,510 --> 00:05:04,500 Takže máme 10 lidí, místo 5 a všichni by se zařazeny do skupin 81 00:05:04,500 --> 00:05:07,480 číslo 0, 1, nebo 2. 82 00:05:07,480 --> 00:05:11,680 >> Snažte se aplikovat na balení po klíčové slovo, kromě namísto třídění 83 00:05:11,680 --> 00:05:16,050 lidi do skupin čísel chcete Index klíčových slov, takže si můžete 84 00:05:16,050 --> 00:05:19,080 ten správný znak pro přejít bez překročení 85 00:05:19,080 --> 00:05:21,836 délka řetězce. 86 00:05:21,836 --> 00:05:24,790 S tím, máte Vigenere šifra. 87 00:05:24,790 --> 00:05:27,790 Jmenuji se Zamyla, a to je CS50. 88 00:05:27,790 --> 00:05:32,566