1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> Ebből: Szia, én vagyok Rob, és hagyja, hogy a megfejtés A Vigenère programot. 3 00:00:16,980 --> 00:00:21,180 Tehát az első dolog, amit meg kell tennie, hogy arról, hogy a felhasználó által megadott, amit vártunk 4 00:00:21,180 --> 00:00:23,240 őket, hogy a parancssorban. 5 00:00:23,240 --> 00:00:28,720 Tehát, ha argc nem 2 azt jelenti, hogy vagy a felhasználó nem adja meg a húr is 6 00:00:28,720 --> 00:00:31,780 akarjuk, hogy a mint a mi titkosítási szöveg, vagy 7 00:00:31,780 --> 00:00:32,890 lépett túl sok mindent. 8 00:00:32,890 --> 00:00:35,130 És nem tudom, mit tegyek azokkal más dolog. 9 00:00:35,130 --> 00:00:37,960 >> Szóval mondd el nekik, mit kellett volna be. 10 00:00:37,960 --> 00:00:39,300 És vissza. 11 00:00:39,300 --> 00:00:44,570 Nos, feltételezve, hogy argc volt 2, tudjuk folytassa a többi programot. 12 00:00:44,570 --> 00:00:47,890 >> Mi alias nevét argv [1] 13 00:00:47,890 --> 00:00:49,750 a változó kulcsszó. 14 00:00:49,750 --> 00:00:51,860 Így, hogy nem kell használja a nevét argv [1] 15 00:00:51,860 --> 00:00:53,050 az egész a többi a program. 16 00:00:53,050 --> 00:00:55,570 És talán akkor felejtsd el, amit ez azt jelenti, és így tovább. 17 00:00:55,570 --> 00:00:57,830 Kulcsszó sokkal szebb nevet. 18 00:00:57,830 --> 00:01:01,982 És mi azonnal megragad hosszát A kulcsszó itt. 19 00:01:01,982 --> 00:01:07,460 >> OK, így most szeretnénk ellenőrizni, hogy a kulcsszó valóban érvényes-e. 20 00:01:07,460 --> 00:01:11,250 A kulcsszó használjuk titkosítja húrok kell csak ábécé 21 00:01:11,250 --> 00:01:12,400 karaktereket. 22 00:01:12,400 --> 00:01:16,830 Ha a felhasználó által megadott non-ábécé karakter, azt kell mondani, kulcsszó 23 00:01:16,830 --> 00:01:20,170 kell, csak olyan A-tól Z, majd vissza. 24 00:01:20,170 --> 00:01:24,370 Tehát ez a for ciklus végigmegy az összes karaktereiből kulcsszó, ellenőrző 25 00:01:24,370 --> 00:01:31,870 hogy ha valaki nem abc, akkor meg kell nyomtatni, hogy figyelmeztetés. 26 00:01:31,870 --> 00:01:36,285 >> Most, ha egyszer eljutunk ezen a ponton, tudjuk, hogy a húr helyesnek kell lennie. 27 00:01:36,285 --> 00:01:38,230 A kulcsszó helyesnek kell lennie. 28 00:01:38,230 --> 00:01:40,880 És most ki kell, hogy az üzenetet a felhasználó számára, hogy azt akarják, hogy 29 00:01:40,880 --> 00:01:43,910 titkosítani az, hogy a legfontosabb mondat. 30 00:01:43,910 --> 00:01:46,780 Tehát, hogy ezt az üzenetet, hogy van egy do while ciklus, ami fog 31 00:01:46,780 --> 00:01:52,650 folyamatosan kap egy karakterláncot a felhasználó amíg azok meg egy érvényes karakterlánc. 32 00:01:52,650 --> 00:01:58,690 >> Folytatva, amit itt látunk, ezt a változót, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Majd meglátjuk, hogy miért van szükség hogy a második. 34 00:02:01,300 --> 00:02:07,320 De ez a for ciklus lesz iterációkhoz az i értéke 0 egészen i 35 00:02:07,320 --> 00:02:10,940 értéke n, ami azt jelenti, mi iterációjával az összes lehetséges 36 00:02:10,940 --> 00:02:13,020 karakterek a mi üzenetünk. 37 00:02:13,020 --> 00:02:17,370 Mert azt akarjuk, hogy titkosítja az összes A karakterek a mi üzenetünk. 38 00:02:17,370 --> 00:02:22,970 Így észre, mi if (isalphamessage [I] mert nem akarjuk titkosítani 39 00:02:22,970 --> 00:02:25,660 karakter, amely nem ábécé. 40 00:02:25,660 --> 00:02:28,810 Ha vannak szimbólumok, terek, vagy számokat, mi nem 41 00:02:28,810 --> 00:02:30,730 titkosítani kívánja azokat. 42 00:02:30,730 --> 00:02:37,220 >> Nos, feltételezve, hogy az ábécé, először szeretné, hogy kitaláljuk, mit 43 00:02:37,220 --> 00:02:40,890 valóban szeretné titkosítani az üzenetet. 44 00:02:40,890 --> 00:02:42,710 Szóval mit jelent ez? 45 00:02:42,710 --> 00:02:46,740 >> Tegyük fel, hogy a legfontosabb mondat a felhasználó által megadott volt abc. 46 00:02:46,740 --> 00:02:49,070 Ez az, amit használ, hogy beavatkozik. 47 00:02:49,070 --> 00:02:54,850 Nos, naivan azt gondoljuk, hogy azt jelenti, hogy szeretnénk titkosítani az első karakter 48 00:02:54,850 --> 00:02:59,740 a mi üzenet 0, mivel egy eszköz forgatható a karakter 0-ra. 49 00:02:59,740 --> 00:03:04,395 >> Azt akarjuk, hogy titkosítja a második karakter 1, harmadik karakter 2, 50 00:03:04,395 --> 00:03:09,170 A negyedik karakter 0, az ötödik 1, 2 a hatodik, és így tovább. 51 00:03:09,170 --> 00:03:14,440 De ne felejtsd el, hogy szeretnénk ugrani terek és szimbólumok és számok. 52 00:03:14,440 --> 00:03:21,520 Ez azt jelenti, hogy ha a felhasználó lépett hello world az üzenet 53 00:03:21,520 --> 00:03:26,590 hogy akarnak titkosítani, majd szeretnénk titkosítani a h 0- 54 00:03:26,590 --> 00:03:32,680 egy megfelelő, az e 1, a l, 2, l-a 0, 1 o. 55 00:03:32,680 --> 00:03:41,050 Azt akarjuk, hogy hagyja ki a helyet, titkosított w 2, az o 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Tehát észre, ha nem kimarad a helyet, akkor mi lett volna a titkosított 57 00:03:45,250 --> 00:03:51,240 a w 0-val és végül a a hibás szöveg. 58 00:03:51,240 --> 00:03:57,470 >> OK, ez az, amire szükségünk van a változó num_letters_seen számára. 59 00:03:57,470 --> 00:04:04,450 Ha mi csak lesz titkosítani a ez a módszer, amely nem hagyja 60 00:04:04,450 --> 00:04:09,860 szimbólumok, terek, és a számok, akkor Lehet, hogy csak használja az i változó, mint amit 61 00:04:09,860 --> 00:04:12,540 az index a kulcsfontosságú mondatot. 62 00:04:12,540 --> 00:04:17,620 Meg kell használni num_letters_seen tartani követni a tényleges helyét a 63 00:04:17,620 --> 00:04:21,146 legfontosabb mondat, amit szeretnénk index. 64 00:04:21,146 --> 00:04:32,240 Tehát itt, ha a kulcsszó van, ha a num_letter_seen mod keyword_length, így 65 00:04:32,240 --> 00:04:34,570 miért kell a mod kulcsszó hossza? 66 00:04:34,570 --> 00:04:36,630 >> Nos, hello world egy jó példa. 67 00:04:36,630 --> 00:04:42,310 Ha a kulcsszó volt, abc, akkor meg kell folyamatosan titkosítani egy akkor b 68 00:04:42,310 --> 00:04:45,740 akkor C, majd csavarja vissza körül, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Tehát meg kell mod kulcsszó hossza annak érdekében, hogy tekerje vissza kb. 70 00:04:50,110 --> 00:04:57,280 >> Tehát ha ez egy nagybetű, akkor szeretnénk titkosítani a 71 00:04:57,280 --> 00:05:01,450 helyzetét, hogy a levél az ábécé, amit kap mellett csak 72 00:05:01,450 --> 00:05:06,730 levonva a tőkét A. és Hasonlóképpen, a kisbetűk, mi 73 00:05:06,730 --> 00:05:13,000 kap a legfontosabb, hogy szeretnénk a kivonva ki kisbetűs a. 74 00:05:13,000 --> 00:05:16,910 Tehát függetlenül attól, hogy a levél A legfontosabb mondat volt a tőke-vagy 75 00:05:16,910 --> 00:05:21,640 kisbetű, megyünk titkosítja az ugyanazt az összeget. 76 00:05:21,640 --> 00:05:28,680 >> Most, hogy megvan a kulcs, amit itt látunk, hogy ha az üzenet azt egy nagybetűs 77 00:05:28,680 --> 00:05:32,660 karakter, akkor szeretnénk számítani a pozícióját az ábécé, amely 78 00:05:32,660 --> 00:05:39,460 karakter, add a kulcsot hozzá, csomagolja vissza körül, hogy ha mentünk már a 79 00:05:39,460 --> 00:05:43,170 z megyünk vissza a, b, c, és így tovább. 80 00:05:43,170 --> 00:05:49,070 Aztán végül, add vissza a tőke A. Tehát mi váltás vissza a [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 tartomány ezeket a karaktereket, hanem a numerikus pozícióját az ábécé 82 00:05:52,010 --> 00:05:53,540 ezek a karakterek. 83 00:05:53,540 --> 00:05:56,610 >> És nem ugyanaz a dolog a kisbetűs karakter. 84 00:05:56,610 --> 00:06:00,070 Kivéve azt akarjuk kivonni ki kisbetűs a, és add vissza a 85 00:06:00,070 --> 00:06:02,900 végén, kisbetűk a. 86 00:06:02,900 --> 00:06:08,120 Vegyük észre, hogy num_letter_seen csak növekszik, ha az üzenet voltam 87 00:06:08,120 --> 00:06:09,640 ábécé. 88 00:06:09,640 --> 00:06:15,790 Így kihagyjuk terek, szimbólumok, és számok kulcsfontosságú mondatot, mert 89 00:06:15,790 --> 00:06:20,520 num_letter_seen az, amit használ az index a kulcsszó. 90 00:06:20,520 --> 00:06:24,540 >> Végül, a végén, most, hogy az üzenet Én nem titkosított, akkor 91 00:06:24,540 --> 00:06:26,280 nyomtassa ki az üzenet i. 92 00:06:26,280 --> 00:06:27,890 És ennyi. 93 00:06:27,890 --> 00:06:28,670 A nevem Rob. 94 00:06:28,670 --> 00:06:31,020 És ez Vigenère. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIC Playing] 96 00:06:32,850 --> 00:06:36,651