>> ROB: Hallo, ich bin Rob, und lassen Sie uns zu entziffern Vigenère-Programm.
Also erste, was wir tun müssen, ist sicher, dass der Benutzer eingegeben, was wir erwartet
sie in der Befehlszeile.
Also, wenn argc ist nicht 2, die entweder bedeutet, der Benutzer nicht die Zeichenfolge wir
wollen, verwenden werden wie unsere Verschlüsselungs String oder sie
eingetragen zu viele Dinge.
Und wir wissen nicht, was zu tun ist mit diesen anderen Dingen.
>> Also sagen wir ihnen, was sie sollte eingegeben haben.
Und wir zurückkehren.
Jetzt, unter der Annahme, dass argc 2 war, wir können weiterhin mit dem Rest des Programms.
>> Wir Aliasnamen den Namen argv [1]
in die variable Schlüsselwort.
So, dass wir nicht zu haben, verwenden Sie den Namen argv [1]
den Rest des Programms.
Und vielleicht werden wir vergessen, was das bedeutet, und so weiter.
Stichwort ist eine viel schönere Namen.
Und wir werden sofort greifen die Länge von unserem Keyword hier richtig.
>> OK, jetzt zu, dass der Check wollen wir unserem Keyword tatsächlich gültig.
Das Schlüsselwort wir verwenden, um Strings verschlüsseln sollte nur ein Buchstabe sein
Zeichen.
Wenn der Benutzer nicht eingegebenen alphabetischen Zeichen, sollten wir sagen, Stichwort
dürfen nur durch eine enthalten Z und dann zurückkehren.
Also diese for-Schleife durchläuft alle Zeichen unserer Schlüsselwort, Überprüfung
dass, wenn man nicht alphabetisch dann wir brauchen, um diese Warnung zu drucken.
>> Nun, wenn wir zu diesem Punkt zu kommen, wissen wir, dass die Zeichenfolge muss korrekt sein.
Das Schlüsselwort muss korrekt sein.
Und jetzt müssen wir die Nachricht von erhalten der Benutzer, die sie wollen, dass wir
Verschlüsselung mit diesem Schlüssel Phrase.
Also, diese Nachricht zu bekommen, haben wir ein tun while-Schleife, die zu gehen ist
kontinuierlich erhalten einen String vom Benutzer bis sie geben Sie eine gültige Zeichenfolge.
>> Weiterbildung, sehen wir hier die Variable, int nun_letters_seen.
Wir werden sehen, warum wir dass in einem zweiten.
Aber diese for-Schleife wird zu laufen von i gleich 0 ist den ganzen Weg bis zu i
gleich n ist, was bedeutet, dass wir die Iteration über alle möglichen
Zeichen in unserer Botschaft.
Weil wir alle verschlüsseln die Zeichen in unserer Botschaft.
So bemerken wir, wenn (isalphamessage [I], weil wir nicht wollen, zu verschlüsseln
Zeichen, die nicht alphabetisch sind.
Wenn es Symbole, Leerzeichen, oder Zahlen, wissen wir nicht
wollen die verschlüsseln.
>> Wenn nun angenommen wird, daß sie alphabetisch ist, Wir wollen zunächst herausfinden, was wir
tatsächlich verschlüsseln möchten die Nachricht mit.
Also, was ich damit meine?
>> Nehmen wir an, dass der Schlüsselbegriff der eingegebene Benutzer abc war.
Das ist, was wir verwenden, um zu verschlüsseln.
Jetzt, naiv, denken wir, das bedeutet, dass wir das erste Zeichen verschlüsseln möchten
unserer Botschaft von 0, da ein Mittel, Drehen Sie das Zeichen mit 0.
>> Wir wollen das zweite Zeichen verschlüsseln mit 1, dritte Zeichen durch 2,
das vierte Zeichen von 0, der fünften durch 1, 2 durch die sechste, und so weiter.
Aber denken Sie daran, dass wir überspringen wollen Räume und Symbole und Zahlen.
Dies bedeutet, dass, wenn der Benutzer eingegeben hat Hallo Welt wie die Nachricht
dass sie zu verschlüsseln, dann möchten wir, die h von 0 verschlüsseln
entsprechend der a, e von 1, die l von 2, die durch L 0, o 1 durch.
Wir wollen, um den Raum zu überspringen, verschlüsselte w von 2, die durch o 0, 1, 2, 0.
So bemerken, wenn wir nicht die übersprungen Raum, dann würden wir verschlüsselt haben
das w von 0 und endete mit die falsche Saite.
>> OK, das ist, was wir brauchen die Variable num_letters_seen für.
Wenn wir gerade dabei, verschlüsseln Sie mit Diese Methode, die nicht zu überspringen ist
Symbole, Leerzeichen und Zahlen, dann werden wir könnten nur die Variable i als das, was
zum Index in unseren Schlüsselphrase mit.
Wir müssen num_letters_seen verwenden, um zu halten Spur der eigentliche Ort in der
Schlüssel Phrase, die wir wollen Index.
Also hier, wenn das Schlüsselwort wir haben, wenn num_letter_seen mod keyword_length, so
Warum brauchen wir, um mod nach Stichwort Länge?
>> Nun, hallo Welt war ein gutes Beispiel.
Wenn das Schlüsselwort abc war, dann müssen wir kontinuierlich von einem verschlüsseln b
dann c, dann wickeln wieder um, a, b, c, a, b, c.
Also müssen wir nach Stichwort Länge mod um herum wickeln zurück.
>> Also, wenn das ein Großbuchstabe, dann durch das verschlüsseln möchten wir
Position dieser Buchstabe im Alphabet, die wir nur bekommen durch
Abzug von Kapital A. Und Auch für Kleinbuchstaben, wir
den Schlüssel, die wir wollen durch bekommen Subtrahieren Kleinbuchstaben ein.
Dies unabhängig davon, ob der Buchstabe in den Schlüsselsatz war eine Kapital-oder
Kleinbuchstaben, wir gehen zu Verschlüsseln um den gleichen Betrag.
>> Jetzt, da wir unsere Schlüssel haben, sehen wir hier, , dass, wenn ich Nachricht ein Groß
Charakter, dann berechnen wollen wir die Position in dem Alphabet, dass
Charakter, fügen unseren Schlüssel dazu, wickeln zurück um, so dass, wenn wir gingen Vergangenheit ein
z gehen wir zurück zu a, b, c, und so weiter.
Dann, endlich, fügen Sie zurück auf die Kapital A. So wir zurück zu verlagern in die [? Ascii?]
Reihe dieser Zeichen statt der numerische Position im Alphabet
dieser Zeichen.
>> Und wir tun das Gleiche für Kleinbuchstaben.
Außer wir subtrahieren wollen Klein ein-und wieder fügen Sie es in die
Ende, in Kleinbuchstaben ein.
Beachten Sie, dass nur num_letter_seen erhöht, wenn die Nachricht war ich
alphabetisch.
Dies ist, wie wir überspringen Räume, Symbole und Zahlen in unseren Schlüsselphrase, da
num_letter_seen ist, was wir mit zum Index in unserem Keyword.
>> Schließlich, am Ende, jetzt Nachricht i verschlüsselt wurde, werden wir
ausdrucken Nachricht i.
Und das ist es.
Mein Name ist Rob.
Und das ist Vigenere.
>> [MUSIC SPIEL]