1 00:00:00,000 --> 00:00:10,101 >> [Музика Відтворення] 2 00:00:10,101 --> 00:00:12,700 >> ZAMYLA Чан: давайте реалізуємо Vigenere, трохи більше 3 00:00:12,700 --> 00:00:14,710 забезпечити шифру, ніж Цезар. 4 00:00:14,710 --> 00:00:19,670 Простий текст шифрується використанням рядок, а ціле. 5 00:00:19,670 --> 00:00:22,970 Кожна буква в простий текст зсувається 6 00:00:22,970 --> 00:00:24,450 букви в слова. 7 00:00:24,450 --> 00:00:30,860 >> У цьому прикладі ключове слово Ohai, Про відповідає зрушенню 14, H, щоб 8 00:00:30,860 --> 00:00:36,910 зсув 7;, зсув 0 і I зсуву 8. 9 00:00:36,910 --> 00:00:40,710 Якщо ви успішно реалізували Шифр Цезаря, це буде хороший 10 00:00:40,710 --> 00:00:43,510 рамки, з яких ви може реалізувати Vigenere. 11 00:00:43,510 --> 00:00:47,140 Як ви можете бачити, працює Vigenere шифр з одного символу, як 12 00:00:47,140 --> 00:00:51,830 Ключове слово те ж саме як шифр Цезаря. 13 00:00:51,830 --> 00:00:55,170 >> Аналогічні дії застосовуються до Vigenere як це було в Цезаря. 14 00:00:55,170 --> 00:01:01,240 Ключовим словом є другою командного рядка Аргумент, так що ви до нього доступ з argv1. 15 00:01:01,240 --> 00:01:05,400 Потім вам потрібно перевірити, що ключ Слово, дійсно, все в алфавітному порядку. 16 00:01:05,400 --> 00:01:09,040 Ось де альфа може стати в нагоді. 17 00:01:09,040 --> 00:01:13,550 Якщо у вас є дійсний ключове слово, ви отримуєте силу від користувача, а потім 18 00:01:13,550 --> 00:01:15,820 Ви готові для шифрування. 19 00:01:15,820 --> 00:01:20,840 >> Формула Vigenere шифр схожий Цезарю формула, тільки тепер до 20 00:01:20,840 --> 00:01:27,650 стає індексом K J, вказуючи J-й букви слова. 21 00:01:27,650 --> 00:01:29,640 Давайте зробимо крок через цей процес. 22 00:01:29,640 --> 00:01:34,060 Скажи, що ти хотів послати повідомлення на ваш аварії, ти мені подобаєшся, але ви не знаєте 23 00:01:34,060 --> 00:01:35,190 хочу, щоб всі знали. 24 00:01:35,190 --> 00:01:39,800 Тому можна використовувати шифр з Vigenere Ключове слово панда, тому що, ну, ви також 25 00:01:39,800 --> 00:01:41,160 подобаються панди. 26 00:01:41,160 --> 00:01:47,140 >> Перший лист, я, будуть зрушені на р, даючи х, 15 літер після того як я, 27 00:01:47,140 --> 00:01:52,850 тому що 15 р 16 буква алфавіту. 28 00:01:52,850 --> 00:01:56,750 Наступна буква відкритого тексту просторі, так що не будуть зрушені. 29 00:01:56,750 --> 00:02:00,420 А індекс ключове слово не зміниться. 30 00:02:00,420 --> 00:02:05,440 >> Тоді наступна буква відкритого тексту л, зрушеної на, яка не зміщується 31 00:02:05,440 --> 00:02:10,930 рівнини текст листа взагалі, тому що є 0-я буква алфавіту. 32 00:02:10,930 --> 00:02:14,980 Процес триває, просуваючись Ключове слово символу за раз є 33 00:02:14,980 --> 00:02:16,840 Лист до простий текст. 34 00:02:16,840 --> 00:02:21,850 Як тільки остання буква в ключове слово досягнуто, то ключове слово обертається навколо і 35 00:02:21,850 --> 00:02:25,890 переходить на наступний простий Текст листа на р.. 36 00:02:25,890 --> 00:02:27,170 X lvne Але. 37 00:02:27,170 --> 00:02:29,180 Як романтично. 38 00:02:29,180 --> 00:02:33,120 >> Тому, враховуючи характер, як ви конвертувати що у відповідний 39 00:02:33,120 --> 00:02:34,590 зашифрувати зміну? 40 00:02:34,590 --> 00:02:37,870 Спробуйте порівняння ASCII значень зсуву. 41 00:02:37,870 --> 00:02:41,530 Може бути, ви можете знайти відносини між літерами і їх 42 00:02:41,530 --> 00:02:44,550 алфавітний покажчик Використання ASCII математику. 43 00:02:44,550 --> 00:02:48,850 Ви можете додати або відняти один символ від іншого, щоб отримати 44 00:02:48,850 --> 00:02:51,630 вам бажаний результат? 45 00:02:51,630 --> 00:02:55,480 >> Пам'ятайте, що для верхнього регістра зсуву і малі літери однакові. 46 00:02:55,480 --> 00:02:59,510 Тому, можливо, вам необхідно виділити два аналогічні формули для представлення 47 00:02:59,510 --> 00:03:03,570 зсув, по одному для верхнього регістру ключове слово символу, і один 48 00:03:03,570 --> 00:03:06,510 для рядкової один. 49 00:03:06,510 --> 00:03:10,630 >> Далі, пам'ятайте, що ключове слово досягнень тільки якщо символ у 50 00:03:10,630 --> 00:03:13,520 простого тексту листа і що випадку рівнині 51 00:03:13,520 --> 00:03:16,020 Текст повинен бути збережений. 52 00:03:16,020 --> 00:03:20,280 Так що, якщо ми подивимося на формулу для Vigenere зрушення, є два індексу 53 00:03:20,280 --> 00:03:22,880 змінних, я і J. 54 00:03:22,880 --> 00:03:26,795 Один стежить за становищем у простій тексту, а інший позиції 55 00:03:26,795 --> 00:03:27,910 в ключовому слові. 56 00:03:27,910 --> 00:03:32,960 Але ваш звичайний текст може бути набагато більше ніж ваші ключові слова, і в цьому випадку ваші 57 00:03:32,960 --> 00:03:38,290 Ключове слово індекс повинен обернути навколо назад до початку слова. 58 00:03:38,290 --> 00:03:39,870 >> Як ви це робите? 59 00:03:39,870 --> 00:03:43,740 Давайте оглянемося на модулю оператора. 60 00:03:43,740 --> 00:03:47,280 Модулю визначається це залишок ділення двох чисел. 61 00:03:47,280 --> 00:03:50,680 Але те, що реальних практичних Використання модуля? 62 00:03:50,680 --> 00:03:54,340 >> Ну, у вас є велика група люди, і ви повинні розділитися на 63 00:03:54,340 --> 00:03:55,100 три групи. 64 00:03:55,100 --> 00:03:59,500 Один із способів розділити людей на групи є, щоб мати їх відраховувати. 65 00:03:59,500 --> 00:04:03,520 Ви числа груп групи № 1, 2 і 3. 66 00:04:03,520 --> 00:04:08,510 Перша людина скаже, 1, Наступні 2, наступні 3. 67 00:04:08,510 --> 00:04:12,860 Людина після цього скаже 1, тому що немає групи 4, а також 68 00:04:12,860 --> 00:04:15,880 відлік починається на себе звідти. 69 00:04:15,880 --> 00:04:18,209 >> Ви можете використовувати модуль для зробити те ж саме. 70 00:04:18,209 --> 00:04:22,680 На цей раз, групи буде бути групи 0, 1 і 2. 71 00:04:22,680 --> 00:04:26,960 Перший чоловік, число 1 за модулем 3, дорівнює 1. 72 00:04:26,960 --> 00:04:29,830 Людина 2 по модулю 3: 2. 73 00:04:29,830 --> 00:04:32,460 Особа 3 по модулю 3: 0. 74 00:04:32,460 --> 00:04:38,470 Персони 4 модулю 3 дає 1 і т.д. групи можуть обернути навколо. 75 00:04:38,470 --> 00:04:44,700 >> Так що якщо ви берете індекс і за модулем що індекс за максимальним розміром, 76 00:04:44,700 --> 00:04:49,820 результат ніколи не буде більше або рівну розміру, тобто ви 77 00:04:49,820 --> 00:04:52,330 може збільшити індекс в якості скільки ви хотіли б. 78 00:04:52,330 --> 00:04:57,400 І до тих пір, як ви модулю індексу деяке число, ви не отримаєте число 79 00:04:57,400 --> 00:04:58,510 більше, ніж це. 80 00:04:58,510 --> 00:05:04,500 Тому у нас є 10 чоловік, а не 5, а вони збиралися всі віднесені до груп 81 00:05:04,500 --> 00:05:07,480 число 0, 1 або 2. 82 00:05:07,480 --> 00:05:11,680 >> Спробуйте застосувати це до завершення над Ключове слово, тільки замість сортування 83 00:05:11,680 --> 00:05:16,050 Група людей у ​​потрібних номерів індекс ключове слово, щоб можна було 84 00:05:16,050 --> 00:05:19,080 отримати правильний символ для переходити без перевищення 85 00:05:19,080 --> 00:05:21,836 Довжина рядка. 86 00:05:21,836 --> 00:05:24,790 При тому, що у вас є Vigenere шифру. 87 00:05:24,790 --> 00:05:27,790 Мене звуть Zamyla, і це CS50. 88 00:05:27,790 --> 00:05:32,566