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