Роб: Прывітанне, я Роб, і давайце расшыфраваць праграма Vigenere. Такім чынам, спачатку, што нам трэба зрабіць, гэта Пераканайцеся, што карыстач увёў тое, што мы чакалі ім у камандным радку. Так што калі агдс ня 2, што азначае ці карыстальнік не ўвайшоў у радок, якую мы хочаце выкарыстоўваць у якасці нашага шыфравання радок, або яны увайшоў занадта шмат рэчаў. І мы не ведаем, што рабіць з гэтымі іншымі рэчамі. Так мы гаворым ім, што яны павінны ўступілі. І мы вернемся. Цяпер, калі выказаць здагадку, што агдс было 2, мы можам працягнуць астатняй часткі праграмы. Мы псеўданім імя ARGV [1] ў зменную ключавое слова. Так што мы не павінны выкарыстоўваць імя ARGV [1] у астатняй часткі праграмы. І можа быць, мы забыліся, што гэта азначае, што і так далей. Ключавое слова з'яўляецца значна прыемней імя. І мы будзем адразу ж захапіць даўжыню нашай ключавое слова тут. Такім чынам, зараз мы хочам праверыць, што наш ключавое слова на самай справе дзейнічае. Ключавое слова мы выкарыстоўваем для шыфравання радкоў павінны быць проста ў алфавітным парадку знакаў. Калі карыстальнік увайшоў без алфавіце знакаў, мы павінны сказаць, ключавое слова павінен змяшчаць толькі скразное Z, а затым вярнуцца. Так што гэта для завес ітэрацыю ўсіх Героі нашага ключавога слова, правяраючы што калі адзін не алфавітны затым мы павінны надрукаваць гэта папярэджанне. Цяпер, калі мы дабрацца да гэтай кропкі, мы ведаем, што радок павінна быць правільнай. Ключавое слова павінна быць правільным. І зараз мы павінны атрымаць паведамленне ад карыстальнік, што яны хочуць, каб мы шыфравання з гэтай ключавой фразы. Такім чынам, каб атрымаць гэта паведамленне, у нас ёсць зрабіць у той час як цыкл, які збіраецца бесперапынна атрымаць радок ад карыстальніка пакуль яны не ўвесці дапушчальную радок. Працягваючы, мы бачым тут гэтую зменную, унутр nun_letters_seen. Мы ўбачым, чаму мы павінны , Што ў секунду. Але гэта цыкл збіраецца ітэрацыі ад я роўная 0 ўвесь шлях да I роўная п, а гэта значыць, што мы ітэрацыі па ўсіх магчымых сімвалы ў наша пасланне. Таму што мы хочам, каб зашыфраваць усе персанажы ў нашым паведамленні. Так заўважыць будзем рабіць, калі (isalphamessage [я], таму што мы не хочам, каб зашыфраваць Сімвалы, ня алфавітны. Калі ёсць сімвалы, прабелы, ці нумары, мы не хочаце зашыфраваць тых. Цяпер, калі выказаць здагадку, што гэта алфавітны, спачатку мы хацелі высветліць, што мы на самай справе хочаце, каб зашыфраваць паведамленне з дапамогай. Так што я маю на ўвазе, што? Давайце выкажам здагадку, што ключавая фраза карыстач увёў была азбука. Гэта тое, што мы выкарыстоўваем для шыфравання. Цяпер, наіўна, мы лічым, што азначае, што мы хочам, каб зашыфраваць першы знак нашага паслання на 0, так як сродак верціцца сімвал 0. Мы хочам, каб зашыфраваць другі сімвал на 1, трэці персанаж на 2, чацвёрты персанаж на 0, пяты на 1, шосты на 2, і гэтак далей. Але памятайце, што мы хочам, каб прапусціць прасторы і сімвалы і лічбы. Гэта азначае, што калі карыстальнік увайшоў прывітанне свет як паведамленне што яны хочуць, каб зашыфраваць, то мы хочам, каб зашыфраваць ч на 0 адпаведная а, е на 1, л на 2, л на 0, аб на 1. Мы хочам, каб прапусціць прастору, зашыфраваны ш на 2, аб на 0, 1, 2, 0. Так заўважыць, калі б мы не прапусцілі прастору, то мы б зашыфраваныя ш 0 і ў канчатковым выніку з няправільнае радок. ОК, гэта тое, што нам трэба зменную num_letters_seen для. Калі мы проста збіраліся для шыфравання з выкарыстаннем гэты метад, які не прапускае сімвалы, прабелы і лічбы, то мы маглі б проста выкарыстоўваць зменную я як тое, што індэксаваць ў нашай фразе с. Мы павінны выкарыстоўваць num_letters_seen трымаць Трэк ад фактычнага месцы ў Ключавая фраза, што мы хочам азначніка. Дык вось, калі ключавое слова ў нас ёсць, калі num_letter_seen мод keyword_length, так чаму мы павінны мод па даўжыні ключавога слова? Ну, прывітанне свет быў добры прыклад. Калі ключавое слова было ABC, то мы павінны пастаянна шыфравання на тое Ь то з, затым абгарнуць таму вакол, а, бы, у, а, бы, у. Так што мы павінны мод па даўжыні ключавога слова для таго, каб абгарнуць таму вакол. Так што, калі гэта прапісная літара, то мы хочам, каб зашыфраваць шляхам Становішча гэтай літары ў алфавіце, якія мы атрымліваем, проста аднімання капіталу А. І аналагічна, для малых літар, мы можа атрымаць ключ, які мы хочам па аднімання маленькую а. Такім чынам, незалежна ад таго, у лісце у фразе быў сталіцай або маленькая літара, мы збіраемся шыфравання на тую ж суму. Цяпер, калі ў нас ёсць наш ключ, мы бачым тут, што калі паведамленне я ў верхнім рэгістры характар, то мы хочам вылічыць становішча ў алфавіце, што характар, дадаць наш ключ да яго, абгарніце назад вакол так, што, калі мы пайшлі міма г мы вернемся да, B, C, і гэтак далей. Тады, нарэшце, дадаць назад па капітальным А. Так мы пераходзім назад у [? ASCII?] Дыяпазон гэтых знакаў замест лікавае становішча ў алфавіце з гэтых знакаў. І мы робім тое ж самае для малыя сімвалы. Акрамя мы хочам адняць ніжні рэгістр і дадаць яго зноў у канец, ніжні рэгістр. Звярніце ўвагу, што num_letter_seen толькі павялічваецца, калі паведамленне я быў алфавітны. Гэта, як мы прапускаем прабелы, сімвалы, і Лічбы ў нашым фразе, так як num_letter_seen тое, што мы выкарыстоўваем індэксаваць ў нашай ключавое слова. Нарэшце, у рэшце рэшт, цяпер, калі паведамленне я быў зашыфраваны, мы раздрукаваць паведамленне я. І гэта ўсё. Мяне клічуць Боб. І гэта Vigenere. [Музыка гуляе]