1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> Роб: Привіт, я Роб, і давайте розшифрувати програма Vigenere. 3 00:00:16,980 --> 00:00:21,180 Отже, спочатку, що нам потрібно зробити, це Переконайтеся, що користувач ввів те, що ми очікували 4 00:00:21,180 --> 00:00:23,240 їм у командному рядку. 5 00:00:23,240 --> 00:00:28,720 Так що якщо агдс не 2, що означає або користувач не увійшов в рядок, яку ми 6 00:00:28,720 --> 00:00:31,780 хочете використовувати в якості нашого шифрування рядок, або вони 7 00:00:31,780 --> 00:00:32,890 увійшов занадто багато речей. 8 00:00:32,890 --> 00:00:35,130 І ми не знаємо, що робити з цими іншими речами. 9 00:00:35,130 --> 00:00:37,960 >> Так ми говоримо їм, що вони повинні вступили. 10 00:00:37,960 --> 00:00:39,300 І ми повернемося. 11 00:00:39,300 --> 00:00:44,570 Тепер, якщо припустити, що агдс було 2, ми можемо продовжити решті частини програми. 12 00:00:44,570 --> 00:00:47,890 >> Ми псевдонім ім'я ARGV [1] 13 00:00:47,890 --> 00:00:49,750 в змінну ключове слово. 14 00:00:49,750 --> 00:00:51,860 Так що ми не повинні використовувати ім'я ARGV [1] 15 00:00:51,860 --> 00:00:53,050 в решті частини програми. 16 00:00:53,050 --> 00:00:55,570 І може бути, ми забули, що це означає, що і так далі. 17 00:00:55,570 --> 00:00:57,830 Ключове слово є набагато приємніше ім'я. 18 00:00:57,830 --> 00:01:01,982 І ми будемо відразу ж захопити довжину нашої ключове слово тут. 19 00:01:01,982 --> 00:01:07,460 >> Отже, тепер ми хочемо перевірити, що наш ключове слово насправді діє. 20 00:01:07,460 --> 00:01:11,250 Ключове слово ми використовуємо для шифрування рядків повинні бути просто в алфавітному порядку 21 00:01:11,250 --> 00:01:12,400 символів. 22 00:01:12,400 --> 00:01:16,830 Якщо користувач увійшов без алфавітом символів, ми повинні сказати, ключове слово 23 00:01:16,830 --> 00:01:20,170 повинен містити тільки наскрізне Z, а потім повернутися. 24 00:01:20,170 --> 00:01:24,370 Так що це для петель ітерацію всіх Герої нашого ключового слова, перевіряючи 25 00:01:24,370 --> 00:01:31,870 що якщо один не алфавітний потім ми повинні надрукувати це попередження. 26 00:01:31,870 --> 00:01:36,285 >> Тепер, коли ми дістатися до цієї точки, ми знаємо, що рядок повинна бути правильною. 27 00:01:36,285 --> 00:01:38,230 Ключове слово має бути правильним. 28 00:01:38,230 --> 00:01:40,880 І тепер ми повинні отримати повідомлення від користувач, що вони хочуть, щоб ми 29 00:01:40,880 --> 00:01:43,910 шифрування з цієї ключової фрази. 30 00:01:43,910 --> 00:01:46,780 Таким чином, щоб отримати це повідомлення, у нас є зробити в той час як цикл, який збирається 31 00:01:46,780 --> 00:01:52,650 безперервно отримати рядок від користувача поки вони не ввести допустиму рядок. 32 00:01:52,650 --> 00:01:58,690 >> Продовжуючи, ми бачимо тут цю змінну, внутр nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Ми побачимо, чому ми повинні , Що в секунду. 34 00:02:01,300 --> 00:02:07,320 Але це цикл збирається ітерації від я дорівнює 0 весь шлях до I 35 00:02:07,320 --> 00:02:10,940 дорівнює п, а це означає, що ми ітерації по всіх можливих 36 00:02:10,940 --> 00:02:13,020 символи в наше послання. 37 00:02:13,020 --> 00:02:17,370 Тому що ми хочемо, щоб зашифрувати всі персонажі в нашому повідомленні. 38 00:02:17,370 --> 00:02:22,970 Так помітити будемо робити, якщо (isalphamessage [я], тому що ми не хочемо, щоб зашифрувати 39 00:02:22,970 --> 00:02:25,660 Символи, що не алфавітний. 40 00:02:25,660 --> 00:02:28,810 Якщо є символи, прогалини, або номери, ми не 41 00:02:28,810 --> 00:02:30,730 хочете зашифрувати тех. 42 00:02:30,730 --> 00:02:37,220 >> Тепер, якщо припустити, що це алфавітний, спочатку ми хотіли з'ясувати, що ми 43 00:02:37,220 --> 00:02:40,890 насправді хочете, щоб зашифрувати повідомлення за допомогою. 44 00:02:40,890 --> 00:02:42,710 Так що я маю на увазі, що? 45 00:02:42,710 --> 00:02:46,740 >> Давайте припустимо, що ключова фраза користувач ввів була абетка. 46 00:02:46,740 --> 00:02:49,070 Це те, що ми використовуємо для шифрування. 47 00:02:49,070 --> 00:02:54,850 Тепер, наївно, ми вважаємо, що означає, що ми хочемо, щоб зашифрувати перший символ 48 00:02:54,850 --> 00:02:59,740 нашого послання на 0, так як засіб обертовий символ 0. 49 00:02:59,740 --> 00:03:04,395 >> Ми хочемо, щоб зашифрувати другий символ на 1, третій персонаж на 2, 50 00:03:04,395 --> 00:03:09,170 четвертий персонаж на 0, п'ятий на 1, шостий на 2, і так далі. 51 00:03:09,170 --> 00:03:14,440 Але пам'ятайте, що ми хочемо, щоб пропустити простору і символи і цифри. 52 00:03:14,440 --> 00:03:21,520 Це означає, що якщо користувач увійшов привіт світ як повідомлення 53 00:03:21,520 --> 00:03:26,590 що вони хочуть, щоб зашифрувати, то ми хочемо, щоб зашифрувати год на 0 54 00:03:26,590 --> 00:03:32,680 відповідна а, е на 1, л на 2, л на 0, о на 1. 55 00:03:32,680 --> 00:03:41,050 Ми хочемо, щоб пропустити простір, зашифрований ш на 2, про на 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Так помітити, якби ми не пропустили простір, то ми б зашифровані 57 00:03:45,250 --> 00:03:51,240 ш 0 і в кінцевому підсумку з неправильне рядок. 58 00:03:51,240 --> 00:03:57,470 >> ОК, це те, що нам потрібно змінну num_letters_seen для. 59 00:03:57,470 --> 00:04:04,450 Якщо ми просто збиралися для шифрування з використанням цей метод, який не пропускає 60 00:04:04,450 --> 00:04:09,860 символи, пробіли та цифри, то ми могли б просто використовувати змінну я як те, що 61 00:04:09,860 --> 00:04:12,540 індексувати в нашій фразі с. 62 00:04:12,540 --> 00:04:17,620 Ми повинні використовувати num_letters_seen тримати Трек від фактичного місця в 63 00:04:17,620 --> 00:04:21,146 Ключова фраза, що ми хочемо індексу. 64 00:04:21,146 --> 00:04:32,240 Так от, якщо ключове слово у нас є, якщо num_letter_seen мод keyword_length, так 65 00:04:32,240 --> 00:04:34,570 чому ми повинні мод по довжині ключового слова? 66 00:04:34,570 --> 00:04:36,630 >> Ну, привіт світ був хороший приклад. 67 00:04:36,630 --> 00:04:42,310 Якщо ключове слово було ABC, то ми повинні постійно шифрування на те Ь 68 00:04:42,310 --> 00:04:45,740 то с, потім обернути назад навколо, а, б, в, а, б, в. 69 00:04:45,740 --> 00:04:50,110 Так що ми повинні мод по довжині ключового слова для того, щоб обернути назад навколо. 70 00:04:50,110 --> 00:04:57,280 >> Так що, якщо це прописна буква, то ми хочемо, щоб зашифрувати шляхом 71 00:04:57,280 --> 00:05:01,450 Положення цієї букви в алфавіті, які ми отримуємо, просто 72 00:05:01,450 --> 00:05:06,730 віднімання капіталу А. І аналогічно, для малих літер, ми 73 00:05:06,730 --> 00:05:13,000 може отримати ключ, який ми хочемо по віднімання строчную а. 74 00:05:13,000 --> 00:05:16,910 Таким чином, незалежно від того, в листі у фразі був столицею або 75 00:05:16,910 --> 00:05:21,640 рядкова буква, ми збираємося шифрування на ту ж суму. 76 00:05:21,640 --> 00:05:28,680 >> Тепер, коли у нас є наш ключ, ми бачимо тут, що якщо повідомлення я у верхньому регістрі 77 00:05:28,680 --> 00:05:32,660 характер, то ми хочемо обчислити положення в алфавіті, що 78 00:05:32,660 --> 00:05:39,460 характер, додати наш ключ до нього, оберніть назад навколо так, що, якщо ми пішли повз 79 00:05:39,460 --> 00:05:43,170 г ми повернемося до, B, C, і так далі. 80 00:05:43,170 --> 00:05:49,070 Тоді, нарешті, додати назад з капітального А. Так ми переходимо назад в [? ASCII?] 81 00:05:49,070 --> 00:05:52,010 Діапазон цих символів замість числове положення в алфавіті 82 00:05:52,010 --> 00:05:53,540 з цих символів. 83 00:05:53,540 --> 00:05:56,610 >> І ми робимо те ж саме для рядкові символи. 84 00:05:56,610 --> 00:06:00,070 Крім ми хочемо відняти нижній регістр і додати його знову в 85 00:06:00,070 --> 00:06:02,900 кінець, нижній регістр. 86 00:06:02,900 --> 00:06:08,120 Зверніть увагу, що num_letter_seen тільки збільшується, якщо повідомлення я був 87 00:06:08,120 --> 00:06:09,640 алфавітний. 88 00:06:09,640 --> 00:06:15,790 Це, як ми пропускаємо прогалини, символи, і Цифри в нашій фразі, так як 89 00:06:15,790 --> 00:06:20,520 num_letter_seen те, що ми використовуємо індексувати в нашій ключове слово. 90 00:06:20,520 --> 00:06:24,540 >> Нарешті, зрештою, тепер, коли повідомлення я був зашифрований, ми 91 00:06:24,540 --> 00:06:26,280 роздрукувати повідомлення я. 92 00:06:26,280 --> 00:06:27,890 І це все. 93 00:06:27,890 --> 00:06:28,670 Мене звуть Боб. 94 00:06:28,670 --> 00:06:31,020 І це Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Музика грає] 96 00:06:32,850 --> 00:06:36,651