1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Bok, ja sam Rob, i neka je odgonetnuti Program Vigenere. 3 00:00:16,980 --> 00:00:21,180 Dakle, prva stvar koju trebate učiniti je da sigurni korisnik unio ono što smo očekivali 4 00:00:21,180 --> 00:00:23,240 ih na naredbenog retka. 5 00:00:23,240 --> 00:00:28,720 Dakle, ako argc nije 2. to znači da bilo korisnik nije unio niz mi 6 00:00:28,720 --> 00:00:31,780 želite koristiti kao naš šifriranje string, ili oni 7 00:00:31,780 --> 00:00:32,890 ušao previše stvari. 8 00:00:32,890 --> 00:00:35,130 A mi ne znamo što učiniti s tim drugim stvarima. 9 00:00:35,130 --> 00:00:37,960 >> Tako smo im reći što trebao stupiti. 10 00:00:37,960 --> 00:00:39,300 I mi smo se vratili. 11 00:00:39,300 --> 00:00:44,570 Sada, uz pretpostavku da argc je 2, što možemo i dalje s ostatkom programa. 12 00:00:44,570 --> 00:00:47,890 >> Mi alias ime argv [1] 13 00:00:47,890 --> 00:00:49,750 u varijablu ključnom riječi. 14 00:00:49,750 --> 00:00:51,860 Tako da mi ne treba koristiti ime argv [1] 15 00:00:51,860 --> 00:00:53,050 tijekom ostatka programa. 16 00:00:53,050 --> 00:00:55,570 I možda ćemo zaboraviti ono to znači i tako dalje. 17 00:00:55,570 --> 00:00:57,830 Riječ je puno ljepše ime. 18 00:00:57,830 --> 00:01:01,982 I mi ćemo odmah zgrabiti duljinu naše ključne riječi ovdje. 19 00:01:01,982 --> 00:01:07,460 >> U redu, tako da sada želimo provjeriti da naša ključna riječ je zapravo vrijedi. 20 00:01:07,460 --> 00:01:11,250 Ključna riječ koristimo za šifriranje žice treba samo biti, abecedni 21 00:01:11,250 --> 00:01:12,400 likovi. 22 00:01:12,400 --> 00:01:16,830 Ako korisnik unio ne abecedni likovi, trebali bismo reći, ključna 23 00:01:16,830 --> 00:01:20,170 mora sadržavati samo probojnu Z a zatim se vratiti. 24 00:01:20,170 --> 00:01:24,370 Pa to za petlje iterates preko svega Likovi našeg ključnu riječ, pravopisa 25 00:01:24,370 --> 00:01:31,870 da, ako netko nije, abecedni onda moramo ispisati tu opomenu. 26 00:01:31,870 --> 00:01:36,285 >> Sada, kada smo došli do ove točke, znamo da string mora biti točna. 27 00:01:36,285 --> 00:01:38,230 Ključna riječ mora biti točna. 28 00:01:38,230 --> 00:01:40,880 I sad moramo dobiti poruku od Korisnik koji su nas žele 29 00:01:40,880 --> 00:01:43,910 šifriranje s tom ključne fraze. 30 00:01:43,910 --> 00:01:46,780 Dakle, da bi dobili tu poruku, imamo učiniti dok petlja koja će se 31 00:01:46,780 --> 00:01:52,650 kontinuirano se niz od korisnika dok ne unesete valjani string. 32 00:01:52,650 --> 00:01:58,690 >> Nastavljajući, ovdje vidimo ovu varijablu, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Vidjet ćemo zašto nam je potrebna da se u trenu. 34 00:02:01,300 --> 00:02:07,320 No, to za petlje će se ponoviti s je jednako 0 skroz do I. 35 00:02:07,320 --> 00:02:10,940 jednako n, što znači da smo iterating preko svega moguće 36 00:02:10,940 --> 00:02:13,020 likovi u našoj poruci. 37 00:02:13,020 --> 00:02:17,370 Zato želimo kodirati sve likovi u našoj poruci. 38 00:02:17,370 --> 00:02:22,970 Dakle, primijetit ćemo učiniti ako (isalphamessage [I], jer mi ne želimo da šifriranje 39 00:02:22,970 --> 00:02:25,660 likovi koji nisu abecedni. 40 00:02:25,660 --> 00:02:28,810 Ako postoje simboli, prostori, ili brojevi, mi ne 41 00:02:28,810 --> 00:02:30,730 želi kodirati one. 42 00:02:30,730 --> 00:02:37,220 >> Sada, uz pretpostavku da je abecedni, prvo žele shvatiti ono što smo 43 00:02:37,220 --> 00:02:40,890 zapravo želite šifrirati Poruka korištenja. 44 00:02:40,890 --> 00:02:42,710 Pa što sam mislio? 45 00:02:42,710 --> 00:02:46,740 >> Pretpostavimo da je ključni izraz korisnik unio je ABC. 46 00:02:46,740 --> 00:02:49,070 To je ono što mi koristimo za šifriranje. 47 00:02:49,070 --> 00:02:54,850 Sada, naivno, mislimo da znači da želimo kodirati prvi znak 48 00:02:54,850 --> 00:02:59,740 naše poruke od 0, jer sredstva okretanjem znaka 0. 49 00:02:59,740 --> 00:03:04,395 >> Mi želimo kodirati drugi znak po jedan, treći lik s 2, 50 00:03:04,395 --> 00:03:09,170 Četvrti lik s 0, peti po 1, šesti po 2, i tako dalje. 51 00:03:09,170 --> 00:03:14,440 Ali zapamtite, da želimo preskočiti prostori i simbola i brojeva. 52 00:03:14,440 --> 00:03:21,520 To znači da ako je korisnik ušao Pozdrav svijetu kao poruka 53 00:03:21,520 --> 00:03:26,590 da žele da šifriranje, a zatim želimo kodirati h po 0 54 00:03:26,590 --> 00:03:32,680 odgovara na A, E za 1, l po 2, l s 0, 1 O strane. 55 00:03:32,680 --> 00:03:41,050 Želimo preskočiti prostor, kodiran W po 2, O s 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Dakle primijetiti, da nismo preskočila prostora, onda bismo kodiran 57 00:03:45,250 --> 00:03:51,240 w po 0, a završila s netočno niz. 58 00:03:51,240 --> 00:03:57,470 >> OK, to je ono što nam treba varijablu num_letters_seen za. 59 00:03:57,470 --> 00:04:04,450 Ako smo samo željeli da šifriranje pomoću Ovaj postupak, koji se ne preskoči 60 00:04:04,450 --> 00:04:09,860 simboli, prostori, i brojevi, onda smo može samo koristiti varijablu i kao što 61 00:04:09,860 --> 00:04:12,540 na indeksu u našoj ključne fraze sa. 62 00:04:12,540 --> 00:04:17,620 Moramo koristiti num_letters_seen zadržati Staza stvarnog mjesta u 63 00:04:17,620 --> 00:04:21,146 Ključni izraz koji želimo indeksa. 64 00:04:21,146 --> 00:04:32,240 Pa evo, ako ključna imamo, ako num_letter_seen mod keyword_length, pa 65 00:04:32,240 --> 00:04:34,570 Zato trebamo mod po duljini ključne riječi? 66 00:04:34,570 --> 00:04:36,630 >> Pa, zdravo je svijet bio dobar primjer. 67 00:04:36,630 --> 00:04:42,310 Ako ključna je ABC, tada moramo kontinuirano šifriranje strane onda b 68 00:04:42,310 --> 00:04:45,740 onda c, a zatim omotajte oko leđa, A, B, C, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Dakle, moramo mod po duljini ključne kako bi zamotajte natrag. 70 00:04:50,110 --> 00:04:57,280 >> Dakle, ako je to veliko slovo, onda želimo kodirati strane 71 00:04:57,280 --> 00:05:01,450 Položaj tim slovom u abecedi, koje smo dobili od samo 72 00:05:01,450 --> 00:05:06,730 oduzimanjem iz kapitala A. A Slično tome, za mala slova, mi 73 00:05:06,730 --> 00:05:13,000 možete dobiti ključ da želimo strane oduzimanjem se malim slovom a.. 74 00:05:13,000 --> 00:05:16,910 Dakle, bez obzira na to je li pismo u ključne fraze bio glavni ili 75 00:05:16,910 --> 00:05:21,640 malo slovo, idemo u šifriranje za isti iznos. 76 00:05:21,640 --> 00:05:28,680 >> Sada kada imamo ključ, što smo vidjeli ovdje, da, ako poruka i je veliko 77 00:05:28,680 --> 00:05:32,660 karakter, onda želimo izračunati Pozicija u pismu koje 78 00:05:32,660 --> 00:05:39,460 karakter, dodati naš ključ za njega, zamotajte natrag okolo, tako da ako mi prolazi 79 00:05:39,460 --> 00:05:43,170 z smo se vratiti na a, b, c, i tako dalje. 80 00:05:43,170 --> 00:05:49,070 Onda je, napokon, dodajte natrag na kapitalnu A. Dakle prebacimo natrag u [? ASCII?] 81 00:05:49,070 --> 00:05:52,010 Raspon tih znakova, umjesto numeričke pozicije u abecedi 82 00:05:52,010 --> 00:05:53,540 od ovih znakova. 83 00:05:53,540 --> 00:05:56,610 >> I mi radimo istu stvar za malih slova. 84 00:05:56,610 --> 00:06:00,070 Osim želimo oduzimati out malim slovima i dodati ga na leđa u 85 00:06:00,070 --> 00:06:02,900 end, malim slovima. 86 00:06:02,900 --> 00:06:08,120 Uočite da num_letter_seen samo Povećava se ako poruka sam bio 87 00:06:08,120 --> 00:06:09,640 abecedni. 88 00:06:09,640 --> 00:06:15,790 Ovo je način kako ćemo preskočiti razmake, simbole i Brojevi u naše ključne fraze, od 89 00:06:15,790 --> 00:06:20,520 num_letter_seen je ono što smo pomoću na indeksu u našoj ključnoj riječi. 90 00:06:20,520 --> 00:06:24,540 >> Konačno, na kraju, sad kad poruka Ja je kodiran, mi 91 00:06:24,540 --> 00:06:26,280 ispisati poruku ja. 92 00:06:26,280 --> 00:06:27,890 I to je to. 93 00:06:27,890 --> 00:06:28,670 Moje ime je Rob. 94 00:06:28,670 --> 00:06:31,020 A to je Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Glazba svira] 96 00:06:32,850 --> 00:06:36,651