1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Здравейте, аз съм Роб, и нека да се разчете програмата 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 Така че, ако argc не е 2, което означава или потребителят не влиза в низ WE 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 Сега, като се предполага, че argc е 2, ние можем продължи с останалата част от програмата. 12 00:00:44,570 --> 00:00:47,890 >> Ние Alias ​​името на 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 >> Продължавайки, ние виждаме тук на тази променлива, Int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Ще видим защо се нуждаем от че в секунда. 34 00:02:01,300 --> 00:02:07,320 Но това за линия ще обхождане от I е равна на 0 по целия път до аз 35 00:02:07,320 --> 00:02:10,940 е равно на N, което означава, че ние сме итерации над всичко възможно 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 [I], защото ние не искаме да криптирате 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 >> Да предположим, че ключовата фраза потребителят е въвел беше ABC. 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, шестият от две, и така нататък. 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, на L от 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 след това в, след това увийте около обратно, A, B, C, A, B, C. 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 изваждане от капитала A. И По същия начин, за малки букви, ние 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 Я да се върнем към а, б, в, и така нататък. 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