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