1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hei, olen Rob, ja lähdetään tulkita Vigenere ohjelma. 3 00:00:16,980 --> 00:00:21,180 Joten ensimmäinen asia, meidän täytyy tehdä, on tehdä Muista käyttäjä kirjoittaa mitä odotimme 4 00:00:21,180 --> 00:00:23,240 ne komentoriviltä. 5 00:00:23,240 --> 00:00:28,720 Joten jos argc ei ole 2, joka tarkoittaa joko käyttäjä ei anna merkkijono me 6 00:00:28,720 --> 00:00:31,780 haluavat käyttää meidän salaus merkkijono, tai ne 7 00:00:31,780 --> 00:00:32,890 tuli liian monia asioita. 8 00:00:32,890 --> 00:00:35,130 Ja emme tiedä mitä tehdä näitä muita asioita. 9 00:00:35,130 --> 00:00:37,960 >> Kerromme heille, mitä he olisi pitänyt kirjoittaa. 10 00:00:37,960 --> 00:00:39,300 Ja palaamme. 11 00:00:39,300 --> 00:00:44,570 Nyt oletetaan, että argc oli 2, voimme edelleen muun ohjelman. 12 00:00:44,570 --> 00:00:47,890 >> Me alias nimi argv [1] 13 00:00:47,890 --> 00:00:49,750 muuttujaan avainsanan. 14 00:00:49,750 --> 00:00:51,860 Jotta meillä ei tarvitse käyttää nimeä argv [1] 15 00:00:51,860 --> 00:00:53,050 koko loppuvuoden ohjelman. 16 00:00:53,050 --> 00:00:55,570 Ja ehkä me unohtaa, mitä se tarkoittaa, että ja niin edelleen. 17 00:00:55,570 --> 00:00:57,830 Avainsana on paljon mukavampi nimi. 18 00:00:57,830 --> 00:01:01,982 Ja me heti napata pituus meidän avainsanan täällä. 19 00:01:01,982 --> 00:01:07,460 >> OK, joten nyt haluamme tarkistaa, että avainsanojen on todella pätevä. 20 00:01:07,460 --> 00:01:11,250 Hakusanalla käytämme salata jouset pitäisi vain olla aakkosjärjestyksessä 21 00:01:11,250 --> 00:01:12,400 merkkiä. 22 00:01:12,400 --> 00:01:16,830 Jos käyttäjä kirjoittaa ei-aakkosjärjestyksessä merkkiä, meidän pitäisi sanoa, avainsana 23 00:01:16,830 --> 00:01:20,170 saa olla vain läpi Z ja palata sitten. 24 00:01:20,170 --> 00:01:24,370 Joten tämä silmukka iteroi kaikki merkkiä avainsanojen, tarkkailu 25 00:01:24,370 --> 00:01:31,870 että jos ei ole aakkosjärjestyksessä sitten meidän täytyy tulostaa tuon varoituksen. 26 00:01:31,870 --> 00:01:36,285 >> Nyt, kun saamme tähän pisteeseen, tiedämme että merkkijono on oltava oikea. 27 00:01:36,285 --> 00:01:38,230 Hakusanalla on oltava oikea. 28 00:01:38,230 --> 00:01:40,880 Ja nyt meidän täytyy saada viestin käyttäjälle, että he haluavat meidän 29 00:01:40,880 --> 00:01:43,910 Salaa että hokeman. 30 00:01:43,910 --> 00:01:46,780 Niin tämä viesti perille, meillä on tehdä, kun silmukka, joka menee 31 00:01:46,780 --> 00:01:52,650 jatkuvasti saada merkkijonon käyttäjä kunnes ne tulevat kelvollinen merkkijono. 32 00:01:52,650 --> 00:01:58,690 >> Jatkuvat, tässä näemme tämän muuttujan, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Saa nähdä, miksi me tarvitsemme että toisen. 34 00:02:01,300 --> 00:02:07,320 Mutta tämä silmukka on menossa kerrata alkaen I on 0 kaikki tavalla jopa i 35 00:02:07,320 --> 00:02:10,940 vastaa n, mikä tarkoittaa, että me iteroimalla kaikkiin mahdollisiin 36 00:02:10,940 --> 00:02:13,020 merkkiä viestimme. 37 00:02:13,020 --> 00:02:17,370 Koska haluamme salata kaikki merkkiä viestimme. 38 00:02:17,370 --> 00:02:22,970 Niin huomaa tehdä, jos (isalphamessage [I], koska emme halua salata 39 00:02:22,970 --> 00:02:25,660 merkkejä, jotka eivät ole aakkosjärjestyksessä. 40 00:02:25,660 --> 00:02:28,810 Jos on symboleja, välilyönnit tai numeroita, emme 41 00:02:28,810 --> 00:02:30,730 haluavat salata niitä. 42 00:02:30,730 --> 00:02:37,220 >> Nyt, olettaen, että se on aakkosjärjestyksessä, haluamme ensin selvittää, mitä me 43 00:02:37,220 --> 00:02:40,890 todella haluavat salata viestin. 44 00:02:40,890 --> 00:02:42,710 Joten mitä tarkoitan tällä? 45 00:02:42,710 --> 00:02:46,740 >> Oletetaan, että hokeman käyttäjä kirjoittaa oli abc. 46 00:02:46,740 --> 00:02:49,070 Sitähän me käytät salata. 47 00:02:49,070 --> 00:02:54,850 Nyt naiivisti, mielestämme tarkoittaa, että haluamme salata ensimmäinen merkki 48 00:02:54,850 --> 00:02:59,740 meidän viestin 0, koska välineet pyörivä merkin 0. 49 00:02:59,740 --> 00:03:04,395 >> Haluamme salata toinen merkki 1, kolmannen merkin 2, 50 00:03:04,395 --> 00:03:09,170 neljännen merkin 0, viides 1, kuudes 2, ja niin edelleen. 51 00:03:09,170 --> 00:03:14,440 Mutta muista, että haluamme ohittaa tilat ja symboleita ja numeroita. 52 00:03:14,440 --> 00:03:21,520 Tämä tarkoittaa, että jos käyttäjä olisi syöttänyt Moikka maailma viesti 53 00:03:21,520 --> 00:03:26,590 että he haluavat salata, niin haluamme salata h 0 54 00:03:26,590 --> 00:03:32,680 vastaa, e 1, L 2, L 0, o 1. 55 00:03:32,680 --> 00:03:41,050 Haluamme ohittaa tilaa, salattu w 2, o 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Joten huomaa, jos emme olisi ohitettu tilaa, niin olisimme salattu 57 00:03:45,250 --> 00:03:51,240 w 0 ja päädyin virheellinen merkkijono. 58 00:03:51,240 --> 00:03:57,470 >> OK, tämä on mitä me tarvitsemme muuttuja num_letters_seen varten. 59 00:03:57,470 --> 00:04:04,450 Jos olimme juuri menossa salata käyttäen Tämän menetelmän, joka ei jätä 60 00:04:04,450 --> 00:04:09,860 symboleja, välilyöntejä ja numeroita, niin me voisi vain käyttää muuttujaa i kuin mitä 61 00:04:09,860 --> 00:04:12,540 indeksoida meidän hokeman kanssa. 62 00:04:12,540 --> 00:04:17,620 Meidän täytyy käyttää num_letters_seen pitää kirjaa todellinen paikka 63 00:04:17,620 --> 00:04:21,146 hokeman, että haluamme indeksiin. 64 00:04:21,146 --> 00:04:32,240 Joten tässä, jos avainsana meillä on, jos num_letter_seen mod keyword_length, niin 65 00:04:32,240 --> 00:04:34,570 miksi tarvitsemme mod avainsanan pituus? 66 00:04:34,570 --> 00:04:36,630 >> No, hello world oli hyvä esimerkki. 67 00:04:36,630 --> 00:04:42,310 Jos avainsana on abc, meidän jatkuvasti salata joita sitten b 68 00:04:42,310 --> 00:04:45,740 niin c, sitten kääri takaisin noin, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Joten meidän täytyy mod avainsanan pituus jotta kääri takaisin noin. 70 00:04:50,110 --> 00:04:57,280 >> Joten jos tämä on iso kirjain, Sitten haluamme salata mukaan 71 00:04:57,280 --> 00:05:01,450 asemaa, että kirjeen aakkoset, josta saamme vain 72 00:05:01,450 --> 00:05:06,730 vähentämällä pääomaa A. Ja Samoin pieniä kirjaimia, me 73 00:05:06,730 --> 00:05:13,000 voi saada avain että haluamme by vähentämällä ulos pieniä. 74 00:05:13,000 --> 00:05:16,910 Niin riippumatta siitä, onko kirje hokeman oli pääomaa tai 75 00:05:16,910 --> 00:05:21,640 pieni kirjain, aiomme salata saman verran. 76 00:05:21,640 --> 00:05:28,680 >> Nyt kun meillä on avain, näemme täällä, että jos viesti i on isoja 77 00:05:28,680 --> 00:05:32,660 merkki, niin haluamme laskea kanta aakkosissa, että 78 00:05:32,660 --> 00:05:39,460 merkki, lisää meidän avain siihen, kääri takaisin ympäri niin, että jos me ohitti 79 00:05:39,460 --> 00:05:43,170 z palaamme, b, c, ja niin edelleen. 80 00:05:43,170 --> 00:05:49,070 Sitten lopuksi lisätä takaisin pääoman A. So siirrämme takaisin [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 valikoima näitä merkkejä sijaan numeerisen sijainnin aakkosissa 82 00:05:52,010 --> 00:05:53,540 näistä merkeistä. 83 00:05:53,540 --> 00:05:56,610 >> Ja teemme saman asian pieniä kirjaimia. 84 00:05:56,610 --> 00:06:00,070 Paitsi haluamme vähentää ulos pieniä ja lisää sen päälle 85 00:06:00,070 --> 00:06:02,900 Lopulta pieniksi. 86 00:06:02,900 --> 00:06:08,120 Huomaa, että num_letter_seen on vain kasvavat, jos viestin olin 87 00:06:08,120 --> 00:06:09,640 aakkosellinen. 88 00:06:09,640 --> 00:06:15,790 Näin me ohittaa tilat, symbolit ja numerot meidän hokeman, koska 89 00:06:15,790 --> 00:06:20,520 num_letter_seen on mitä käytämme indeksoida osaksi avainsanojen. 90 00:06:20,520 --> 00:06:24,540 >> Lopuksi, lopulta, nyt kun viesti i on salattu, me 91 00:06:24,540 --> 00:06:26,280 tulostaa viestin i. 92 00:06:26,280 --> 00:06:27,890 Ja se on siinä. 93 00:06:27,890 --> 00:06:28,670 Nimeni on Rob. 94 00:06:28,670 --> 00:06:31,020 Ja tämä on Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Musiikki soi] 96 00:06:32,850 --> 00:06:36,651