1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hallo, ich bin Rob, und lassen Sie uns zu entziffern Vigenère-Programm. 3 00:00:16,980 --> 00:00:21,180 Also erste, was wir tun müssen, ist sicher, dass der Benutzer eingegeben, was wir erwartet 4 00:00:21,180 --> 00:00:23,240 sie in der Befehlszeile. 5 00:00:23,240 --> 00:00:28,720 Also, wenn argc ist nicht 2, die entweder bedeutet, der Benutzer nicht die Zeichenfolge wir 6 00:00:28,720 --> 00:00:31,780 wollen, verwenden werden wie unsere Verschlüsselungs String oder sie 7 00:00:31,780 --> 00:00:32,890 eingetragen zu viele Dinge. 8 00:00:32,890 --> 00:00:35,130 Und wir wissen nicht, was zu tun ist mit diesen anderen Dingen. 9 00:00:35,130 --> 00:00:37,960 >> Also sagen wir ihnen, was sie sollte eingegeben haben. 10 00:00:37,960 --> 00:00:39,300 Und wir zurückkehren. 11 00:00:39,300 --> 00:00:44,570 Jetzt, unter der Annahme, dass argc 2 war, wir können weiterhin mit dem Rest des Programms. 12 00:00:44,570 --> 00:00:47,890 >> Wir Aliasnamen den Namen argv [1] 13 00:00:47,890 --> 00:00:49,750 in die variable Schlüsselwort. 14 00:00:49,750 --> 00:00:51,860 So, dass wir nicht zu haben, verwenden Sie den Namen argv [1] 15 00:00:51,860 --> 00:00:53,050 den Rest des Programms. 16 00:00:53,050 --> 00:00:55,570 Und vielleicht werden wir vergessen, was das bedeutet, und so weiter. 17 00:00:55,570 --> 00:00:57,830 Stichwort ist eine viel schönere Namen. 18 00:00:57,830 --> 00:01:01,982 Und wir werden sofort greifen die Länge von unserem Keyword hier richtig. 19 00:01:01,982 --> 00:01:07,460 >> OK, jetzt zu, dass der Check wollen wir unserem Keyword tatsächlich gültig. 20 00:01:07,460 --> 00:01:11,250 Das Schlüsselwort wir verwenden, um Strings verschlüsseln sollte nur ein Buchstabe sein 21 00:01:11,250 --> 00:01:12,400 Zeichen. 22 00:01:12,400 --> 00:01:16,830 Wenn der Benutzer nicht eingegebenen alphabetischen Zeichen, sollten wir sagen, Stichwort 23 00:01:16,830 --> 00:01:20,170 dürfen nur durch eine enthalten Z und dann zurückkehren. 24 00:01:20,170 --> 00:01:24,370 Also diese for-Schleife durchläuft alle Zeichen unserer Schlüsselwort, Überprüfung 25 00:01:24,370 --> 00:01:31,870 dass, wenn man nicht alphabetisch dann wir brauchen, um diese Warnung zu drucken. 26 00:01:31,870 --> 00:01:36,285 >> Nun, wenn wir zu diesem Punkt zu kommen, wissen wir, dass die Zeichenfolge muss korrekt sein. 27 00:01:36,285 --> 00:01:38,230 Das Schlüsselwort muss korrekt sein. 28 00:01:38,230 --> 00:01:40,880 Und jetzt müssen wir die Nachricht von erhalten der Benutzer, die sie wollen, dass wir 29 00:01:40,880 --> 00:01:43,910 Verschlüsselung mit diesem Schlüssel Phrase. 30 00:01:43,910 --> 00:01:46,780 Also, diese Nachricht zu bekommen, haben wir ein tun while-Schleife, die zu gehen ist 31 00:01:46,780 --> 00:01:52,650 kontinuierlich erhalten einen String vom Benutzer bis sie geben Sie eine gültige Zeichenfolge. 32 00:01:52,650 --> 00:01:58,690 >> Weiterbildung, sehen wir hier die Variable, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Wir werden sehen, warum wir dass in einem zweiten. 34 00:02:01,300 --> 00:02:07,320 Aber diese for-Schleife wird zu laufen von i gleich 0 ist den ganzen Weg bis zu i 35 00:02:07,320 --> 00:02:10,940 gleich n ist, was bedeutet, dass wir die Iteration über alle möglichen 36 00:02:10,940 --> 00:02:13,020 Zeichen in unserer Botschaft. 37 00:02:13,020 --> 00:02:17,370 Weil wir alle verschlüsseln die Zeichen in unserer Botschaft. 38 00:02:17,370 --> 00:02:22,970 So bemerken wir, wenn (isalphamessage [I], weil wir nicht wollen, zu verschlüsseln 39 00:02:22,970 --> 00:02:25,660 Zeichen, die nicht alphabetisch sind. 40 00:02:25,660 --> 00:02:28,810 Wenn es Symbole, Leerzeichen, oder Zahlen, wissen wir nicht 41 00:02:28,810 --> 00:02:30,730 wollen die verschlüsseln. 42 00:02:30,730 --> 00:02:37,220 >> Wenn nun angenommen wird, daß sie alphabetisch ist, Wir wollen zunächst herausfinden, was wir 43 00:02:37,220 --> 00:02:40,890 tatsächlich verschlüsseln möchten die Nachricht mit. 44 00:02:40,890 --> 00:02:42,710 Also, was ich damit meine? 45 00:02:42,710 --> 00:02:46,740 >> Nehmen wir an, dass der Schlüsselbegriff der eingegebene Benutzer abc war. 46 00:02:46,740 --> 00:02:49,070 Das ist, was wir verwenden, um zu verschlüsseln. 47 00:02:49,070 --> 00:02:54,850 Jetzt, naiv, denken wir, das bedeutet, dass wir das erste Zeichen verschlüsseln möchten 48 00:02:54,850 --> 00:02:59,740 unserer Botschaft von 0, da ein Mittel, Drehen Sie das Zeichen mit 0. 49 00:02:59,740 --> 00:03:04,395 >> Wir wollen das zweite Zeichen verschlüsseln mit 1, dritte Zeichen durch 2, 50 00:03:04,395 --> 00:03:09,170 das vierte Zeichen von 0, der fünften durch 1, 2 durch die sechste, und so weiter. 51 00:03:09,170 --> 00:03:14,440 Aber denken Sie daran, dass wir überspringen wollen Räume und Symbole und Zahlen. 52 00:03:14,440 --> 00:03:21,520 Dies bedeutet, dass, wenn der Benutzer eingegeben hat Hallo Welt wie die Nachricht 53 00:03:21,520 --> 00:03:26,590 dass sie zu verschlüsseln, dann möchten wir, die h von 0 verschlüsseln 54 00:03:26,590 --> 00:03:32,680 entsprechend der a, e von 1, die l von 2, die durch L 0, o 1 durch. 55 00:03:32,680 --> 00:03:41,050 Wir wollen, um den Raum zu überspringen, verschlüsselte w von 2, die durch o 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 So bemerken, wenn wir nicht die übersprungen Raum, dann würden wir verschlüsselt haben 57 00:03:45,250 --> 00:03:51,240 das w von 0 und endete mit die falsche Saite. 58 00:03:51,240 --> 00:03:57,470 >> OK, das ist, was wir brauchen die Variable num_letters_seen für. 59 00:03:57,470 --> 00:04:04,450 Wenn wir gerade dabei, verschlüsseln Sie mit Diese Methode, die nicht zu überspringen ist 60 00:04:04,450 --> 00:04:09,860 Symbole, Leerzeichen und Zahlen, dann werden wir könnten nur die Variable i als das, was 61 00:04:09,860 --> 00:04:12,540 zum Index in unseren Schlüsselphrase mit. 62 00:04:12,540 --> 00:04:17,620 Wir müssen num_letters_seen verwenden, um zu halten Spur der eigentliche Ort in der 63 00:04:17,620 --> 00:04:21,146 Schlüssel Phrase, die wir wollen Index. 64 00:04:21,146 --> 00:04:32,240 Also hier, wenn das Schlüsselwort wir haben, wenn num_letter_seen mod keyword_length, so 65 00:04:32,240 --> 00:04:34,570 Warum brauchen wir, um mod nach Stichwort Länge? 66 00:04:34,570 --> 00:04:36,630 >> Nun, hallo Welt war ein gutes Beispiel. 67 00:04:36,630 --> 00:04:42,310 Wenn das Schlüsselwort abc war, dann müssen wir kontinuierlich von einem verschlüsseln b 68 00:04:42,310 --> 00:04:45,740 dann c, dann wickeln wieder um, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Also müssen wir nach Stichwort Länge mod um herum wickeln zurück. 70 00:04:50,110 --> 00:04:57,280 >> Also, wenn das ein Großbuchstabe, dann durch das verschlüsseln möchten wir 71 00:04:57,280 --> 00:05:01,450 Position dieser Buchstabe im Alphabet, die wir nur bekommen durch 72 00:05:01,450 --> 00:05:06,730 Abzug von Kapital A. Und Auch für Kleinbuchstaben, wir 73 00:05:06,730 --> 00:05:13,000 den Schlüssel, die wir wollen durch bekommen Subtrahieren Kleinbuchstaben ein. 74 00:05:13,000 --> 00:05:16,910 Dies unabhängig davon, ob der Buchstabe in den Schlüsselsatz war eine Kapital-oder 75 00:05:16,910 --> 00:05:21,640 Kleinbuchstaben, wir gehen zu Verschlüsseln um den gleichen Betrag. 76 00:05:21,640 --> 00:05:28,680 >> Jetzt, da wir unsere Schlüssel haben, sehen wir hier, , dass, wenn ich Nachricht ein Groß 77 00:05:28,680 --> 00:05:32,660 Charakter, dann berechnen wollen wir die Position in dem Alphabet, dass 78 00:05:32,660 --> 00:05:39,460 Charakter, fügen unseren Schlüssel dazu, wickeln zurück um, so dass, wenn wir gingen Vergangenheit ein 79 00:05:39,460 --> 00:05:43,170 z gehen wir zurück zu a, b, c, und so weiter. 80 00:05:43,170 --> 00:05:49,070 Dann, endlich, fügen Sie zurück auf die Kapital A. So wir zurück zu verlagern in die [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 Reihe dieser Zeichen statt der numerische Position im Alphabet 82 00:05:52,010 --> 00:05:53,540 dieser Zeichen. 83 00:05:53,540 --> 00:05:56,610 >> Und wir tun das Gleiche für Kleinbuchstaben. 84 00:05:56,610 --> 00:06:00,070 Außer wir subtrahieren wollen Klein ein-und wieder fügen Sie es in die 85 00:06:00,070 --> 00:06:02,900 Ende, in Kleinbuchstaben ein. 86 00:06:02,900 --> 00:06:08,120 Beachten Sie, dass nur num_letter_seen erhöht, wenn die Nachricht war ich 87 00:06:08,120 --> 00:06:09,640 alphabetisch. 88 00:06:09,640 --> 00:06:15,790 Dies ist, wie wir überspringen Räume, Symbole und Zahlen in unseren Schlüsselphrase, da 89 00:06:15,790 --> 00:06:20,520 num_letter_seen ist, was wir mit zum Index in unserem Keyword. 90 00:06:20,520 --> 00:06:24,540 >> Schließlich, am Ende, jetzt Nachricht i verschlüsselt wurde, werden wir 91 00:06:24,540 --> 00:06:26,280 ausdrucken Nachricht i. 92 00:06:26,280 --> 00:06:27,890 Und das ist es. 93 00:06:27,890 --> 00:06:28,670 Mein Name ist Rob. 94 00:06:28,670 --> 00:06:31,020 Und das ist Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIC SPIEL] 96 00:06:32,850 --> 00:06:36,651