1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Cześć, jestem Rob, i niech to rozszyfrować Program Vigenere'a. 3 00:00:16,980 --> 00:00:21,180 Tak więc pierwszą rzeczą, którą musisz zrobić to zrobić czy użytkownik wprowadził to, czego oczekuje 4 00:00:21,180 --> 00:00:23,240 je w wierszu polecenia. 5 00:00:23,240 --> 00:00:28,720 Tak więc, jeśli nie jest argc 2 oznacza albo użytkownik nie wprowadzi my ciąg 6 00:00:28,720 --> 00:00:31,780 chcesz używać jako naszego szyfrowania łańcuch, albo 7 00:00:31,780 --> 00:00:32,890 Wprowadzona zbyt wiele rzeczy. 8 00:00:32,890 --> 00:00:35,130 I nie wiemy, co robić z tych innych rzeczy. 9 00:00:35,130 --> 00:00:37,960 >> Więc powiedz im to, co oni powinny wchodzić. 10 00:00:37,960 --> 00:00:39,300 I wracamy. 11 00:00:39,300 --> 00:00:44,570 Teraz, przy założeniu, że argc było 2, możemy kontynuować reszty programu. 12 00:00:44,570 --> 00:00:47,890 >> My alias nazwę argv [1] 13 00:00:47,890 --> 00:00:49,750 do kluczowych zmiennych. 14 00:00:49,750 --> 00:00:51,860 Tak, że nie mamy do stosować nazwę argv [1] 15 00:00:51,860 --> 00:00:53,050 w pozostałej części programu. 16 00:00:53,050 --> 00:00:55,570 A może zapomnimy, co to znaczy, i tak dalej. 17 00:00:55,570 --> 00:00:57,830 Słowo kluczowe jest o wiele ładniejsza nazwa. 18 00:00:57,830 --> 00:01:01,982 A my natychmiast chwycić długość naszego hasła tutaj. 19 00:01:01,982 --> 00:01:07,460 >> OK, więc teraz chcemy, aby sprawdzić, kluczowe jest rzeczywiście nasz ważny. 20 00:01:07,460 --> 00:01:11,250 Hasło używamy do szyfrowania ciągi powinny być tylko alfabetycznie 21 00:01:11,250 --> 00:01:12,400 znaków. 22 00:01:12,400 --> 00:01:16,830 Jeśli użytkownik wprowadził zakaz alfabetycznie znaków, powinniśmy powiedzieć, słów kluczowych 23 00:01:16,830 --> 00:01:20,170 musi zawierać tylko przelotowy Z a następnie wrócić. 24 00:01:20,170 --> 00:01:24,370 Więc to dla iteruje pętli na wszystko znaków z naszego hasła, sprawdzając 25 00:01:24,370 --> 00:01:31,870 że jeśli ktoś nie jest w kolejności alfabetycznej, a następnie musimy wydrukować tego ostrzeżenia. 26 00:01:31,870 --> 00:01:36,285 >> Teraz, gdy już dotrzesz do tego punktu, znamy że łańcuch musi być poprawne. 27 00:01:36,285 --> 00:01:38,230 Hasło musi być poprawne. 28 00:01:38,230 --> 00:01:40,880 A teraz musimy się komunikat z Użytkownik, który chce nas 29 00:01:40,880 --> 00:01:43,910 szyfrowania z tej frazy kluczowe. 30 00:01:43,910 --> 00:01:46,780 Tak, aby ta wiadomość, mamy zrobić, gdy pętla, która będzie 31 00:01:46,780 --> 00:01:52,650 stale uzyskać ciąg od użytkownika aż wprowadzić prawidłowy ciąg. 32 00:01:52,650 --> 00:01:58,690 >> Kontynuując, widzimy tę zmienną, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Zobaczymy, dlaczego musimy że w drugiej. 34 00:02:01,300 --> 00:02:07,320 Ale to dla pętli będzie iteracyjne od i jest równe 0 aż do I 35 00:02:07,320 --> 00:02:10,940 jest równa n, co oznacza, mamy iteracji na wszystkie możliwe 36 00:02:10,940 --> 00:02:13,020 znaków w naszej wiadomości. 37 00:02:13,020 --> 00:02:17,370 Ponieważ chcemy, aby zaszyfrować wszystkie znaki w naszej wiadomości. 38 00:02:17,370 --> 00:02:22,970 Więc jeśli zauważysz robimy (isalphamessage [I], ponieważ nie chcemy, aby zaszyfrować 39 00:02:22,970 --> 00:02:25,660 znaków, które nie są w kolejności alfabetycznej. 40 00:02:25,660 --> 00:02:28,810 Jeśli istnieją symbole, miejsca, lub numery, nie mamy 41 00:02:28,810 --> 00:02:30,730 chcesz zaszyfrować te. 42 00:02:30,730 --> 00:02:37,220 >> Teraz, przy założeniu, że jest to w kolejności alfabetycznej, najpierw chce dowiedzieć się, co 43 00:02:37,220 --> 00:02:40,890 rzeczywiście chcesz zaszyfrować wiadomość za pomocą. 44 00:02:40,890 --> 00:02:42,710 Więc co mam na myśli? 45 00:02:42,710 --> 00:02:46,740 >> Załóżmy, że fraza kluczowa użytkownik wszedł był abc. 46 00:02:46,740 --> 00:02:49,070 To jest to, czego używasz do szyfrowania. 47 00:02:49,070 --> 00:02:54,850 Teraz, naiwnie, uważamy, że oznacza to, że chcemy szyfrować pierwszy znak 48 00:02:54,850 --> 00:02:59,740 naszej wiadomości przez 0, ponieważ środki obrócenie go przez 0. 49 00:02:59,740 --> 00:03:04,395 >> Chcemy zaszyfrować drugi znak o 1, trzecia postać przez 2, 50 00:03:04,395 --> 00:03:09,170 Czwarta postać o 0, piąty przez 1, szósty przez 2, i tak dalej. 51 00:03:09,170 --> 00:03:14,440 Ale pamiętaj, że chcemy pominąć miejsca i symbole i numery. 52 00:03:14,440 --> 00:03:21,520 Oznacza to, że jeśli użytkownik wszedł hello world w komunikacie 53 00:03:21,520 --> 00:03:26,590 że chcesz zaszyfrować, a następnie chcemy zaszyfrować h przez 0. 54 00:03:26,590 --> 00:03:32,680 odpowiadająca a, e przez 1, l przez 2, l przez 0, o. o 1. 55 00:03:32,680 --> 00:03:41,050 Chcemy, aby pominąć miejsca, szyfrowane W przez 2, o o 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Więc zauważyć, jeśli nie pomijane miejsca, to byłby zaszyfrowany 57 00:03:45,250 --> 00:03:51,240 W od 0 i skończyło się nieprawidłowy ciąg. 58 00:03:51,240 --> 00:03:57,470 >> OK, to jest to, czego potrzebujemy zmiennej num_letters_seen dla. 59 00:03:57,470 --> 00:04:04,450 Jeśli byliśmy po prostu się do szyfrowania za pomocą Ten sposób, który nie pominąć 60 00:04:04,450 --> 00:04:09,860 symbole, miejsca i numery, to może po prostu użyć zmiennej i jak co 61 00:04:09,860 --> 00:04:12,540 do wskaźnika do naszej frazy kluczowe z. 62 00:04:12,540 --> 00:04:17,620 Musimy wykorzystać num_letters_seen zachować utwór od rzeczywistego miejsca w 63 00:04:17,620 --> 00:04:21,146 frazy kluczowe, które chcemy indeksować. 64 00:04:21,146 --> 00:04:32,240 Więc tutaj, jeśli słowo kluczowe mamy, jeśli num_letter_seen mod keyword_length, więc 65 00:04:32,240 --> 00:04:34,570 dlaczego musimy mod o długości słowa kluczowego? 66 00:04:34,570 --> 00:04:36,630 >> Cóż, witaj świecie był dobrym przykładem. 67 00:04:36,630 --> 00:04:42,310 Jeśli słowo kluczowe było abc, to musimy stale szyfrowania przez to b 68 00:04:42,310 --> 00:04:45,740 następnie c, a następnie owinąć powraca, , b, c, b, c. 69 00:04:45,740 --> 00:04:50,110 Więc musimy o długości kluczowym mod Aby zawijać powraca. 70 00:04:50,110 --> 00:04:57,280 >> Więc jeśli to jest wielką literą, następnie chcemy szyfrować przez 71 00:04:57,280 --> 00:05:01,450 Pozycja tej litery alfabetu, które mamy po prostu 72 00:05:01,450 --> 00:05:06,730 odjęciu kapitału A. I Podobnie, dla małych liter, my 73 00:05:06,730 --> 00:05:13,000 Można dostać klucz, który chcemy przez odjęcie się małą A. 74 00:05:13,000 --> 00:05:16,910 Tak więc niezależnie od tego, czy list w kluczowym zwrotem kapitału lub był 75 00:05:16,910 --> 00:05:21,640 mała litera, będziemy szyfrowania w tej samej wysokości. 76 00:05:21,640 --> 00:05:28,680 >> Teraz, mamy klucz, widzimy, że jeśli wiadomość i to wielkie 77 00:05:28,680 --> 00:05:32,660 znaków, a następnie chcemy obliczyć pozycja w alfabecie, że 78 00:05:32,660 --> 00:05:39,460 charakter, dodaj nasz klucz do niego, zawinąć z powrotem się tak, że jeśli poszliśmy przeszłości 79 00:05:39,460 --> 00:05:43,170 z wracamy do A, B, C, i tak dalej. 80 00:05:43,170 --> 00:05:49,070 Wtedy wreszcie dodać ponownie kapitałowej A. Tak cofać z powrotem do [? ASCII?] 81 00:05:49,070 --> 00:05:52,010 Zakres tych znaków zamiast pozycja numeryczna w alfabecie 82 00:05:52,010 --> 00:05:53,540 z tych znaków. 83 00:05:53,540 --> 00:05:56,610 >> I robimy to samo dla małe litery. 84 00:05:56,610 --> 00:06:00,070 Wyjątkiem chcemy odjąć małe litery i dodać go ponownie w 85 00:06:00,070 --> 00:06:02,900 koniec, małe litery. 86 00:06:02,900 --> 00:06:08,120 Zauważ, że num_letter_seen tylko zwiększany, jeśli wiadomość byłem 87 00:06:08,120 --> 00:06:09,640 alfabetycznie. 88 00:06:09,640 --> 00:06:15,790 W ten sposób możemy pominąć spacje, symbole i Liczby w naszej kluczowej frazy, od 89 00:06:15,790 --> 00:06:20,520 num_letter_seen to co używamy do wskaźnika do naszego hasła. 90 00:06:20,520 --> 00:06:24,540 >> Na koniec, w celu teraz komunikat I został zaszyfrowany, my 91 00:06:24,540 --> 00:06:26,280 wydrukować wiadomość i. 92 00:06:26,280 --> 00:06:27,890 I to jest to. 93 00:06:27,890 --> 00:06:28,670 Nazywam się Rob. 94 00:06:28,670 --> 00:06:31,020 I to jest Vigenere'a. 95 00:06:31,020 --> 00:06:32,850 >> [MUZYKA GRA] 96 00:06:32,850 --> 00:06:36,651