>> ROB: Здравейте, аз съм Роб, и нека да се разчете програмата Vigenere.
Така че първото нещо, което трябва да направите, е да уверите, че потребителят е въвел това, което очаквахме
тях, за да в командния ред.
Така че, ако argc не е 2, което означава или потребителят не влиза в низ WE
Искам да се използва като наш криптиране низ, или те
въвели прекалено много неща.
И ние не знаем какво да правим с другите неща.
>> Така че ние да им кажа това, което те трябва да сте въвели.
И ние се върне.
Сега, като се предполага, че argc е 2, ние можем продължи с останалата част от програмата.
>> Ние Alias ​​името на ARGV [1]
в променливата дума.
Така че ние не трябва да се използвайте ARGV име [1]
по време на останалата част от програмата.
И може би ние няма да забравя това, което това означава, че и така нататък.
Ключова дума е много по-хубаво име.
И ние веднага ще вземете дължината на нашата дума тук.
>> ОК, така че сега искаме да се провери дали нашата дума е действително валидна.
Ключовата дума ние използваме, за да кодира низове просто трябва да бъде азбучен
символа.
Ако потребителят е въвел небуквен символи, трябва да кажем, ключова дума
трябва да съдържа само чрез Z и след това се върнете.
Така че това за цикъл повтаря над всички символи на нашата дума, проверка
че ако един не е азбучен тогава ние трябва да отпечатате това предупреждение.
>> Сега, след като стигнем до този момент, ние знаем, че низа трябва да бъде вярна.
Ключовата дума трябва да бъде вярна.
И сега ние трябва да получите съобщение от на потребителя, че те ни искат да
криптирате с тази ключова фраза.
Така че, за да получите това съобщение, ние имаме правя, докато линия, която ще
непрекъснато се получи низ от потребителя докато не въведете валиден низ.
>> Продължавайки, ние виждаме тук на тази променлива, Int nun_letters_seen.
Ще видим защо се нуждаем от че в секунда.
Но това за линия ще обхождане от I е равна на 0 по целия път до аз
е равно на N, което означава, че ние сме итерации над всичко възможно
герои в нашето послание.
Защото ние искаме да криптира цялата героите в нашето послание.
Така че забележите правим, ако (isalphamessage [I], защото ние не искаме да криптирате
символи, които не са по азбучен ред.
Ако има символи, пространства, или номера, ние не правим
искате да криптирате тези.
>> Сега се предполага, че е азбучен, ние първо искам да разбера това, което ние
всъщност искате да криптирате съобщението използвате.
Така че това, което искам да кажа с това?
>> Да предположим, че ключовата фраза потребителят е въвел беше ABC.
Това е, което ние използваме, за да кодира.
Сега, наивно, ние смятаме, че означава, че ние искаме да криптирате първия знак
на нашето послание с 0, тъй като средство завъртане на характер от 0.
>> Искаме да криптирате втория знак с 1, трето характер с 2,
четвъртия знак от 0, на петия от 1, шестият от две, и така нататък.
Но не забравяйте, че ние искаме да пропуснете пространства и символи и цифри.
Това означава, че ако потребителят е въведена здравей свят, тъй като посланието
че те искат да бъдат криптирани, тогава ние искаме да криптирате ч от 0
съответстваща на А, Е от 1, в л. с 2, на L от 0, о с 1.
Искаме да пропуснете пространството, криптирана на вата от 2, о от 0, 1, 2, 0.
Така че забележите, ако не бяхме пропуснали пространство, а след това щяхме да криптира
на ват от 0 и завърши с неправилно низ.
>> ОК, това е, което ние се нуждаем от променливата num_letters_seen за.
Ако бяхме просто ще криптира с помощта на Този метод, който не пропуснете
символи, интервали и числа, тогава ние може просто да използвате променливата аз като това, което
да индекс в нашия ключова фраза с.
Трябва да използваме num_letters_seen да запазите следите на действителното място в
ключова фраза, която ние искаме да се индексират.
Така че тук, ако ключовата дума, която имаме, ако num_letter_seen мод keyword_length, така
Защо ние трябва да моден с дължина на ключова дума?
>> Е, здравей свят е един добър пример.
Ако ключовата дума е ABC, а след това ние се нуждаем непрекъснато да криптирате от тогава б
след това в, след това увийте около обратно, A, B, C, A, B, C.
Така че ние трябва да моден по дължина дума , за да приключи обратно наоколо.
>> Така че, ако това е главна буква, След това ние искаме да криптирате от Комисията
позиция на това писмо в азбуката, която получаваме от просто
изваждане от капитала A. И По същия начин, за малки букви, ние
може да получи ключа, който ние искаме от изваждане от малки букви а.
Така че, независимо от това дали буквата в ключовата фраза беше капитал или
малка буква, ние ще криптира със същата сума.
>> Сега, че ние имаме ключ, ще видите тук, че ако посланието ми е главна
характер, а след това ние искаме да се изчисли позиция в азбуката на тази
характер, да добавите нашия ключ към него, увийте обратно наоколо, така че ако мина покрай една
Я да се върнем към а, б, в, и така нататък.
След това, най-накрая, добавете обратно на капитала А. Така ние се премести в [? Ascii?]
диапазон на тези символи, вместо на числова позиция в азбуката
на тези герои.
>> И ние правим едно и също нещо за малки букви.
Освен искаме да извадим от малки букви А и да го добавите отново в на
край, малки букви а.
Забележете, че num_letter_seen е само увеличава, ако съобщение бях
азбучен.
Това е как да пропуснем пространства, символи и числа в нашата ключова фраза, тъй като
num_letter_seen е това, което ние използваме да индекс в нашата ключова дума.
>> И накрая, в края на краищата, сега това съобщение аз е криптирана, ние
отпечатате съобщение аз.
И това е всичко.
Моето име е Роб.
И това е Vigenere.
>> [За възпроизвеждане на музика]