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 Па ако argc не е 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 Сега, претпоставувајќи дека argc беше 2, може да се продолжи со остатокот на програмата. 12 00:00:44,570 --> 00:00:47,890 >> Ние алијас името на avg [1] 13 00:00:47,890 --> 00:00:49,750 во променлива клучен збор. 14 00:00:49,750 --> 00:00:51,860 Така што ние не треба да користи името avg [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 Па ова за јамка iterates над сите ликови од нашите клучни зборови, проверка 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 Но, ова за телефонска линија ќе iterate од 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, шест од 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 одговара на a, на e од 1, l со 2, l од 0, o од 1. 55 00:03:32,680 --> 00:03:41,050 Ние сакаме да го прескокнете простор, шифрирана на w од 2, o од 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Така забележите, ако ние не го прескокнаа простор, тогаш ќе имаме шифрирана 57 00:03:45,250 --> 00:03:51,240 на W со 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 симболи, празни места, и броеви, тогаш ние само може да го користи променливата i како што 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 тогаш C, а потоа заврши назад наоколу, 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 одземање надвор град А И Слично на тоа, за мали букви, ние 73 00:05:06,730 --> 00:05:13,000 може да го добиете клучот што сакаме со одземање на мали a. 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 z ние се вратиме на А, Б, Ц, и така натаму. 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 испечатите порака i. 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