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