1 00:00:00,000 --> 00:00:10,101 >> [Музички] 2 00:00:10,101 --> 00:00:12,700 >> ZAMYLA CHAN: Ајде да се имплементираат Vigenere, малку повеќе 3 00:00:12,700 --> 00:00:14,710 обезбеди шифра од Цезар. 4 00:00:14,710 --> 00:00:19,670 На обичен текст е enciphered користење низа наместо на цел број. 5 00:00:19,670 --> 00:00:22,970 Секој азбучен карактер во обичен текст е префрлена од 6 00:00:22,970 --> 00:00:24,450 буква во збор. 7 00:00:24,450 --> 00:00:30,860 >> Во овој пример, клучниот збор ohai, о одговара на промена на 14; H до 8 00:00:30,860 --> 00:00:36,910 префрлат на 7; А, промена на 0; и јас промена на 8. 9 00:00:36,910 --> 00:00:40,710 Ако сте успешно ја спроведе својата Цезар шифра, тоа ќе биде убаво 10 00:00:40,710 --> 00:00:43,510 рамка, од кои може може да се спроведе Vigenere. 11 00:00:43,510 --> 00:00:47,140 Како што можете да видите, водење на Vigenere шифра со еден карактер како 12 00:00:47,140 --> 00:00:51,830 Клучниот збор е истото како шифра Цезар. 13 00:00:51,830 --> 00:00:55,170 >> Истите чекори важат за Vigenere како што тоа го правеа во Цезар. 14 00:00:55,170 --> 00:01:01,240 Клучниот збор е вториот командната линија аргумент, па можете да пристапите со argv1. 15 00:01:01,240 --> 00:01:05,400 Тогаш ќе треба да потврди дека клучот зборот е всушност и сите азбучен. 16 00:01:05,400 --> 00:01:09,040 Тука е местото каде што е алфа може да дојде во рака. 17 00:01:09,040 --> 00:01:13,550 Ако имате валидна клучни зборови, ќе го добиете сила од страна на корисникот, а потоа 18 00:01:13,550 --> 00:01:15,820 ќе бидете подготвени да написвам со Воице. 19 00:01:15,820 --> 00:01:20,840 >> Шифра Vigenere формула е сличен за Цезар формула, освен сега к 20 00:01:20,840 --> 00:01:27,650 станува к индекс ѕ, што укажува на J-та буква од клучни зборови. 21 00:01:27,650 --> 00:01:29,640 Ајде да влезете низ овој процес. 22 00:01:29,640 --> 00:01:34,060 Велат дека сака да испрати порака на вашата несреќата, јас ви се допаѓа, но вие не се 23 00:01:34,060 --> 00:01:35,190 сакате сите да знаат. 24 00:01:35,190 --> 00:01:39,800 Па можете да користите Vigenere шифра со клучен збор панда, бидејќи, сепак, можете, исто така 25 00:01:39,800 --> 00:01:41,160 како панди. 26 00:01:41,160 --> 00:01:47,140 >> На првата буква, јас ќе се префрли од страна на P, давајќи x, 15 писма, по што, 27 00:01:47,140 --> 00:01:52,850 бидејќи 15 p е 16-ти буква од азбуката. 28 00:01:52,850 --> 00:01:56,750 Следната буква во обичен текст е простор, така што нема да се префрли. 29 00:01:56,750 --> 00:02:00,420 А индексот на клучниот збор нема да се промени. 30 00:02:00,420 --> 00:02:05,440 >> Тогаш следната буква во обичен текст е л, се префрли од кои не се префрлува 31 00:02:05,440 --> 00:02:10,930 на обичен текст писмо на сите, бидејќи a е 0. буква од азбуката. 32 00:02:10,930 --> 00:02:14,980 Процесот продолжува, унапредување на клучни зборови карактер секој пат кога има некој 33 00:02:14,980 --> 00:02:16,840 писмо во обичен текст. 34 00:02:16,840 --> 00:02:21,850 Еднаш на последната буква клучниот збор е достигна, клучниот збор обвива околу и 35 00:02:21,850 --> 00:02:25,890 поместувања на следното обичен текст писмо од стр. 36 00:02:25,890 --> 00:02:27,170 X lvne noh. 37 00:02:27,170 --> 00:02:29,180 Како романтичен. 38 00:02:29,180 --> 00:02:33,120 >> Па со оглед на карактерот, како да конвертирате дека во соодветните 39 00:02:33,120 --> 00:02:34,590 шифра промена? 40 00:02:34,590 --> 00:02:37,870 Обидете се споредуваат со ASCII вредности на смена. 41 00:02:37,870 --> 00:02:41,530 Можеби може да се најде врската помеѓу буквите и нивната 42 00:02:41,530 --> 00:02:44,550 азбучен индекс користење на ASCII математика. 43 00:02:44,550 --> 00:02:48,850 Можете да додадете или одземе еден карактер од друг за да се добие 44 00:02:48,850 --> 00:02:51,630 можете саканиот резултат? 45 00:02:51,630 --> 00:02:55,480 >> Се сеќавам дека смени за големи и мали букви се исти. 46 00:02:55,480 --> 00:02:59,510 Па можеби ќе треба да се идентификуваат две слични формули за да ги претставуваат 47 00:02:59,510 --> 00:03:03,570 смена, една за големи клучни зборови карактер, а една 48 00:03:03,570 --> 00:03:06,510 за мали еден. 49 00:03:06,510 --> 00:03:10,630 >> Следно, се сеќавам дека клучниот збор напредок само ако ликот во 50 00:03:10,630 --> 00:03:13,520 обичен текст е писмо и дека случај на обична 51 00:03:13,520 --> 00:03:16,020 Текстот мора да се сочуваат. 52 00:03:16,020 --> 00:03:20,280 Значи, ако се погледне на формулата за Vigenere смена, постојат два индекс 53 00:03:20,280 --> 00:03:22,880 променливи, i и j. 54 00:03:22,880 --> 00:03:26,795 Еден следи на позицијата во обичен текст, а другата позиција 55 00:03:26,795 --> 00:03:27,910 во клучен збор. 56 00:03:27,910 --> 00:03:32,960 Но вашиот обичен текст може да биде многу подолг од вашите клучни зборови, во кој случај вашиот 57 00:03:32,960 --> 00:03:38,290 клучни зборови индекс треба да заврши околу назад на почетокот на клучниот збор. 58 00:03:38,290 --> 00:03:39,870 >> Како го правиш ова? 59 00:03:39,870 --> 00:03:43,740 Ајде да се погледне назад на modulo оператор. 60 00:03:43,740 --> 00:03:47,280 Modulo е дефиниран е остатокот на поделба на два броја. 61 00:03:47,280 --> 00:03:50,680 Но она што е вистински практични користење на modulo? 62 00:03:50,680 --> 00:03:54,340 >> Па, да речеме дека имате голема група на луѓе, а вие треба да се подели во 63 00:03:54,340 --> 00:03:55,100 три групи. 64 00:03:55,100 --> 00:03:59,500 Еден начин да се дели луѓето на групи е да се смета на нив надвор. 65 00:03:59,500 --> 00:04:03,520 Можете број на групите група број 1, 2, и 3. 66 00:04:03,520 --> 00:04:08,510 Првиот човек ќе каже 1, следните 2, во следните 3. 67 00:04:08,510 --> 00:04:12,860 На лицето по што ќе каже 1, бидејќи таму не е група 4, и 68 00:04:12,860 --> 00:04:15,880 брои почнува од таму. 69 00:04:15,880 --> 00:04:18,209 >> Можете да го користите modulo да го прават истото. 70 00:04:18,209 --> 00:04:22,680 Овој пат, групите ќе биде група 0, 1, и 2. 71 00:04:22,680 --> 00:04:26,960 Првиот човек, број 1 modulo 3, е 1. 72 00:04:26,960 --> 00:04:29,830 Лице 2 modulo 3 е на 2. 73 00:04:29,830 --> 00:04:32,460 Лице 3 modulo 3 е 0. 74 00:04:32,460 --> 00:04:38,470 Лице 4 modulo 3 дава 1, и така групите може да се заврши околу. 75 00:04:38,470 --> 00:04:44,700 >> Па ако се земе индексот и modulo дека индекс со максимална големина, 76 00:04:44,700 --> 00:04:49,820 Резултатот никогаш нема да биде поголема или еднаква на големината, што значи дека 77 00:04:49,820 --> 00:04:52,330 може да ја зголеми индекс како колку што сакате. 78 00:04:52,330 --> 00:04:57,400 И онолку долго колку што modulo индексот од некои број, нема да добиете голем број 79 00:04:57,400 --> 00:04:58,510 поголеми од тоа. 80 00:04:58,510 --> 00:05:04,500 Па ние имаме 10 луѓе, наместо на 5, и сите тие ќе се доделува на групи 81 00:05:04,500 --> 00:05:07,480 број 0, 1, или 2. 82 00:05:07,480 --> 00:05:11,680 >> Се обиде да ја применуваат оваа на завиткување во текот на клучни зборови, освен наместо на сортирање 83 00:05:11,680 --> 00:05:16,050 луѓе во група броеви сакате индексот на клучни зборови, така што ќе може да 84 00:05:16,050 --> 00:05:19,080 добие право карактер за префрлат, без пречекорување на 85 00:05:19,080 --> 00:05:21,836 должината на стрингот. 86 00:05:21,836 --> 00:05:24,790 Со тоа, имате Vigenere број. 87 00:05:24,790 --> 00:05:27,790 Моето име е Zamyla, а тоа е CS50. 88 00:05:27,790 --> 00:05:32,566