>> [Музика Відтворення]
>> ZAMYLA Чан: давайте реалізуємо Vigenere, трохи більше
забезпечити шифру, ніж Цезар.
Простий текст шифрується використанням рядок, а ціле.
Кожна буква в простий текст зсувається
букви в слова.
>> У цьому прикладі ключове слово Ohai, Про відповідає зрушенню 14, H, щоб
зсув 7;, зсув 0 і I зсуву 8.
Якщо ви успішно реалізували Шифр Цезаря, це буде хороший
рамки, з яких ви може реалізувати Vigenere.
Як ви можете бачити, працює Vigenere шифр з одного символу, як
Ключове слово те ж саме як шифр Цезаря.
>> Аналогічні дії застосовуються до Vigenere як це було в Цезаря.
Ключовим словом є другою командного рядка Аргумент, так що ви до нього доступ з argv1.
Потім вам потрібно перевірити, що ключ Слово, дійсно, все в алфавітному порядку.
Ось де альфа може стати в нагоді.
Якщо у вас є дійсний ключове слово, ви отримуєте силу від користувача, а потім
Ви готові для шифрування.
>> Формула Vigenere шифр схожий Цезарю формула, тільки тепер до
стає індексом K J, вказуючи J-й букви слова.
Давайте зробимо крок через цей процес.
Скажи, що ти хотів послати повідомлення на ваш аварії, ти мені подобаєшся, але ви не знаєте
хочу, щоб всі знали.
Тому можна використовувати шифр з Vigenere Ключове слово панда, тому що, ну, ви також
подобаються панди.
>> Перший лист, я, будуть зрушені на р, даючи х, 15 літер після того як я,
тому що 15 р 16 буква алфавіту.
Наступна буква відкритого тексту просторі, так що не будуть зрушені.
А індекс ключове слово не зміниться.
>> Тоді наступна буква відкритого тексту л, зрушеної на, яка не зміщується
рівнини текст листа взагалі, тому що є 0-я буква алфавіту.
Процес триває, просуваючись Ключове слово символу за раз є
Лист до простий текст.
Як тільки остання буква в ключове слово досягнуто, то ключове слово обертається навколо і
переходить на наступний простий Текст листа на р..
X lvne Але.
Як романтично.
>> Тому, враховуючи характер, як ви конвертувати що у відповідний
зашифрувати зміну?
Спробуйте порівняння ASCII значень зсуву.
Може бути, ви можете знайти відносини між літерами і їх
алфавітний покажчик Використання ASCII математику.
Ви можете додати або відняти один символ від іншого, щоб отримати
вам бажаний результат?
>> Пам'ятайте, що для верхнього регістра зсуву і малі літери однакові.
Тому, можливо, вам необхідно виділити два аналогічні формули для представлення
зсув, по одному для верхнього регістру ключове слово символу, і один
для рядкової один.
>> Далі, пам'ятайте, що ключове слово досягнень тільки якщо символ у
простого тексту листа і що випадку рівнині
Текст повинен бути збережений.
Так що, якщо ми подивимося на формулу для Vigenere зрушення, є два індексу
змінних, я і J.
Один стежить за становищем у простій тексту, а інший позиції
в ключовому слові.
Але ваш звичайний текст може бути набагато більше ніж ваші ключові слова, і в цьому випадку ваші
Ключове слово індекс повинен обернути навколо назад до початку слова.
>> Як ви це робите?
Давайте оглянемося на модулю оператора.
Модулю визначається це залишок ділення двох чисел.
Але те, що реальних практичних Використання модуля?
>> Ну, у вас є велика група люди, і ви повинні розділитися на
три групи.
Один із способів розділити людей на групи є, щоб мати їх відраховувати.
Ви числа груп групи № 1, 2 і 3.
Перша людина скаже, 1, Наступні 2, наступні 3.
Людина після цього скаже 1, тому що немає групи 4, а також
відлік починається на себе звідти.
>> Ви можете використовувати модуль для зробити те ж саме.
На цей раз, групи буде бути групи 0, 1 і 2.
Перший чоловік, число 1 за модулем 3, дорівнює 1.
Людина 2 по модулю 3: 2.
Особа 3 по модулю 3: 0.
Персони 4 модулю 3 дає 1 і т.д. групи можуть обернути навколо.
>> Так що якщо ви берете індекс і за модулем що індекс за максимальним розміром,
результат ніколи не буде більше або рівну розміру, тобто ви
може збільшити індекс в якості скільки ви хотіли б.
І до тих пір, як ви модулю індексу деяке число, ви не отримаєте число
більше, ніж це.
Тому у нас є 10 чоловік, а не 5, а вони збиралися всі віднесені до груп
число 0, 1 або 2.
>> Спробуйте застосувати це до завершення над Ключове слово, тільки замість сортування
Група людей у ​​потрібних номерів індекс ключове слово, щоб можна було
отримати правильний символ для переходити без перевищення
Довжина рядка.
При тому, що у вас є Vigenere шифру.
Мене звуть Zamyla, і це CS50.