>> Роб: Привіт, я Роб, і давайте розшифрувати програма Vigenere.
Отже, спочатку, що нам потрібно зробити, це Переконайтеся, що користувач ввів те, що ми очікували
їм у командному рядку.
Так що якщо агдс не 2, що означає або користувач не увійшов в рядок, яку ми
хочете використовувати в якості нашого шифрування рядок, або вони
увійшов занадто багато речей.
І ми не знаємо, що робити з цими іншими речами.
>> Так ми говоримо їм, що вони повинні вступили.
І ми повернемося.
Тепер, якщо припустити, що агдс було 2, ми можемо продовжити решті частини програми.
>> Ми псевдонім ім'я ARGV [1]
в змінну ключове слово.
Так що ми не повинні використовувати ім'я ARGV [1]
в решті частини програми.
І може бути, ми забули, що це означає, що і так далі.
Ключове слово є набагато приємніше ім'я.
І ми будемо відразу ж захопити довжину нашої ключове слово тут.
>> Отже, тепер ми хочемо перевірити, що наш ключове слово насправді діє.
Ключове слово ми використовуємо для шифрування рядків повинні бути просто в алфавітному порядку
символів.
Якщо користувач увійшов без алфавітом символів, ми повинні сказати, ключове слово
повинен містити тільки наскрізне Z, а потім повернутися.
Так що це для петель ітерацію всіх Герої нашого ключового слова, перевіряючи
що якщо один не алфавітний потім ми повинні надрукувати це попередження.
>> Тепер, коли ми дістатися до цієї точки, ми знаємо, що рядок повинна бути правильною.
Ключове слово має бути правильним.
І тепер ми повинні отримати повідомлення від користувач, що вони хочуть, щоб ми
шифрування з цієї ключової фрази.
Таким чином, щоб отримати це повідомлення, у нас є зробити в той час як цикл, який збирається
безперервно отримати рядок від користувача поки вони не ввести допустиму рядок.
>> Продовжуючи, ми бачимо тут цю змінну, внутр nun_letters_seen.
Ми побачимо, чому ми повинні , Що в секунду.
Але це цикл збирається ітерації від я дорівнює 0 весь шлях до I
дорівнює п, а це означає, що ми ітерації по всіх можливих
символи в наше послання.
Тому що ми хочемо, щоб зашифрувати всі персонажі в нашому повідомленні.
Так помітити будемо робити, якщо (isalphamessage [я], тому що ми не хочемо, щоб зашифрувати
Символи, що не алфавітний.
Якщо є символи, прогалини, або номери, ми не
хочете зашифрувати тех.
>> Тепер, якщо припустити, що це алфавітний, спочатку ми хотіли з'ясувати, що ми
насправді хочете, щоб зашифрувати повідомлення за допомогою.
Так що я маю на увазі, що?
>> Давайте припустимо, що ключова фраза користувач ввів була абетка.
Це те, що ми використовуємо для шифрування.
Тепер, наївно, ми вважаємо, що означає, що ми хочемо, щоб зашифрувати перший символ
нашого послання на 0, так як засіб обертовий символ 0.
>> Ми хочемо, щоб зашифрувати другий символ на 1, третій персонаж на 2,
четвертий персонаж на 0, п'ятий на 1, шостий на 2, і так далі.
Але пам'ятайте, що ми хочемо, щоб пропустити простору і символи і цифри.
Це означає, що якщо користувач увійшов привіт світ як повідомлення
що вони хочуть, щоб зашифрувати, то ми хочемо, щоб зашифрувати год на 0
відповідна а, е на 1, л на 2, л на 0, о на 1.
Ми хочемо, щоб пропустити простір, зашифрований ш на 2, про на 0, 1, 2, 0.
Так помітити, якби ми не пропустили простір, то ми б зашифровані
ш 0 і в кінцевому підсумку з неправильне рядок.
>> ОК, це те, що нам потрібно змінну num_letters_seen для.
Якщо ми просто збиралися для шифрування з використанням цей метод, який не пропускає
символи, пробіли та цифри, то ми могли б просто використовувати змінну я як те, що
індексувати в нашій фразі с.
Ми повинні використовувати num_letters_seen тримати Трек від фактичного місця в
Ключова фраза, що ми хочемо індексу.
Так от, якщо ключове слово у нас є, якщо num_letter_seen мод keyword_length, так
чому ми повинні мод по довжині ключового слова?
>> Ну, привіт світ був хороший приклад.
Якщо ключове слово було ABC, то ми повинні постійно шифрування на те Ь
то с, потім обернути назад навколо, а, б, в, а, б, в.
Так що ми повинні мод по довжині ключового слова для того, щоб обернути назад навколо.
>> Так що, якщо це прописна буква, то ми хочемо, щоб зашифрувати шляхом
Положення цієї букви в алфавіті, які ми отримуємо, просто
віднімання капіталу А. І аналогічно, для малих літер, ми
може отримати ключ, який ми хочемо по віднімання строчную а.
Таким чином, незалежно від того, в листі у фразі був столицею або
рядкова буква, ми збираємося шифрування на ту ж суму.
>> Тепер, коли у нас є наш ключ, ми бачимо тут, що якщо повідомлення я у верхньому регістрі
характер, то ми хочемо обчислити положення в алфавіті, що
характер, додати наш ключ до нього, оберніть назад навколо так, що, якщо ми пішли повз
г ми повернемося до, B, C, і так далі.
Тоді, нарешті, додати назад з капітального А. Так ми переходимо назад в [? ASCII?]
Діапазон цих символів замість числове положення в алфавіті
з цих символів.
>> І ми робимо те ж саме для рядкові символи.
Крім ми хочемо відняти нижній регістр і додати його знову в
кінець, нижній регістр.
Зверніть увагу, що num_letter_seen тільки збільшується, якщо повідомлення я був
алфавітний.
Це, як ми пропускаємо прогалини, символи, і Цифри в нашій фразі, так як
num_letter_seen те, що ми використовуємо індексувати в нашій ключове слово.
>> Нарешті, зрештою, тепер, коли повідомлення я був зашифрований, ми
роздрукувати повідомлення я.
І це все.
Мене звуть Боб.
І це Vigenere.
>> [Музика грає]