1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Hi, ek is Rob, en laat ons ontsyfer die Vigenere program. 3 00:00:16,980 --> 00:00:21,180 So die eerste ding wat ons moet doen, is om Maak seker dat die gebruiker aangegaan is wat ons verwag 4 00:00:21,180 --> 00:00:23,240 hulle op die opdrag lyn. 5 00:00:23,240 --> 00:00:28,720 So as argc is nie 2 wat beteken dat óf die gebruiker het nie die string ons 6 00:00:28,720 --> 00:00:31,780 wil word met behulp van as ons versleutelen string, of hulle 7 00:00:31,780 --> 00:00:32,890 aangegaan te veel dinge. 8 00:00:32,890 --> 00:00:35,130 En ons weet nie wat om te doen met dié van ander dinge. 9 00:00:35,130 --> 00:00:37,960 >> So het ons vertel hulle wat hulle moet aangegaan het. 10 00:00:37,960 --> 00:00:39,300 En ons terugkeer. 11 00:00:39,300 --> 00:00:44,570 Nou, in die veronderstelling dat argc was 2, ons kan voort te gaan met die res van die program. 12 00:00:44,570 --> 00:00:47,890 >> Ons alias die naam van bevat SPASIES [1] 13 00:00:47,890 --> 00:00:49,750 in die veranderlike navraag. 14 00:00:49,750 --> 00:00:51,860 Sodat ons nie hoef te gebruik die naam bevat SPASIES [1] 15 00:00:51,860 --> 00:00:53,050 in die res van die program. 16 00:00:53,050 --> 00:00:55,570 En miskien sal ons vergeet wat dit beteken en so aan. 17 00:00:55,570 --> 00:00:57,830 Navraag is 'n baie mooier naam. 18 00:00:57,830 --> 00:01:01,982 En ons sal onmiddellik gryp die lengte van ons navraag hier. 19 00:01:01,982 --> 00:01:07,460 >> OK, so nou wil ons dat om te kyk ons navraag is eintlik geldig is. 20 00:01:07,460 --> 00:01:11,250 Die navraag wat ons gebruik snare te enkripteer moet net alfabetiese wees 21 00:01:11,250 --> 00:01:12,400 karakters. 22 00:01:12,400 --> 00:01:16,830 As die gebruiker aangegaan is nie-alfabetiese karakters, moet ons sê, navraag 23 00:01:16,830 --> 00:01:20,170 moet slegs bevat 'n deur Z en dan terug te keer. 24 00:01:20,170 --> 00:01:24,370 So dit vir lus herhaal oor al karakters van ons navraag, kontrole 25 00:01:24,370 --> 00:01:31,870 dat as een is nie alfabetiese dan ons nodig het dat die waarskuwing te druk. 26 00:01:31,870 --> 00:01:36,285 >> Nou, wanneer ons by hierdie punt, ons weet dat die string moet korrek wees. 27 00:01:36,285 --> 00:01:38,230 Die navraag moet korrek wees. 28 00:01:38,230 --> 00:01:40,880 En nou het ons nodig het om die boodskap te kry van die gebruiker wat hulle wil hê ons moet 29 00:01:40,880 --> 00:01:43,910 enkripteer met die sleutel frase. 30 00:01:43,910 --> 00:01:46,780 Sodat die boodskap te kry, het ons 'n doen terwyl loop wat gaan 31 00:01:46,780 --> 00:01:52,650 voortdurend 'n string van die gebruiker totdat hulle 'n geldige string. 32 00:01:52,650 --> 00:01:58,690 >> Voort, hier sien ons hierdie veranderlike, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Ons sal sien hoekom ons nodig het wat in 'n tweede. 34 00:02:01,300 --> 00:02:07,320 Maar dit vir lus gaan Itereer van i gelyk aan 0 al die pad tot i 35 00:02:07,320 --> 00:02:10,940 gelyk aan n, wat beteken dat ons iterating oor alle moontlike 36 00:02:10,940 --> 00:02:13,020 karakters in ons boodskap. 37 00:02:13,020 --> 00:02:17,370 Omdat ons wil hê al te enkripteer die karakters in ons boodskap. 38 00:02:17,370 --> 00:02:22,970 So sien ons doen as (isalphamessage [I], omdat ons nie wil hê om te enkripteer 39 00:02:22,970 --> 00:02:25,660 karakters wat nie alfabetiese. 40 00:02:25,660 --> 00:02:28,810 As daar simbole, spasies, of nommers, ons doen nie 41 00:02:28,810 --> 00:02:30,730 wil daardie te enkripteer. 42 00:02:30,730 --> 00:02:37,220 >> Nou, met die veronderstelling dat dit alfabeties, Ons wil eers om uit te vind wat ons 43 00:02:37,220 --> 00:02:40,890 eintlik wil enkripteer die boodskap gebruik. 44 00:02:40,890 --> 00:02:42,710 So, wat doen ek dit? 45 00:02:42,710 --> 00:02:46,740 >> Kom ons neem aan dat die sleutel frase die gebruiker aangegaan is ABC. 46 00:02:46,740 --> 00:02:49,070 Dit is wat ons gebruik om te enkripteer. 47 00:02:49,070 --> 00:02:54,850 Nou, naïef, ons dink dit beteken dat Ons wil die eerste karakter te enkripteer 48 00:02:54,850 --> 00:02:59,740 van ons boodskap deur 0, aangesien 'n middel roterende die karakter deur 0. 49 00:02:59,740 --> 00:03:04,395 >> Ons wil die tweede karakter te enkripteer deur 1, derde karakter deur 2, 50 00:03:04,395 --> 00:03:09,170 die vierde karakter met 0, die vyfde deur 1, die sesde met 2, en so aan. 51 00:03:09,170 --> 00:03:14,440 Maar onthou, dat ons wil hê om oor te slaan ruimtes en simbole en getalle. 52 00:03:14,440 --> 00:03:21,520 Dit beteken dat indien die gebruiker aangegaan het hallo wêreld as die boodskap 53 00:03:21,520 --> 00:03:26,590 dat hulle wil hê om te enkripteer, dan ons wil die h te enkripteer deur 0 54 00:03:26,590 --> 00:03:32,680 ooreenstem met die a, die e met 1, die l deur 2, die l met 0, die o deur 1. 55 00:03:32,680 --> 00:03:41,050 Ons wil die ruimte te slaan, geïnkripteer die w deur 2, die o met 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 So sien, as ons nie oorgeslaan die ruimte, dan sou ons geïnkripteer het 57 00:03:45,250 --> 00:03:51,240 die w deur 0 en geëindig met die verkeerde tou. 58 00:03:51,240 --> 00:03:57,470 >> OK, dit is wat ons nodig het om die veranderlike num_letters_seen vir. 59 00:03:57,470 --> 00:04:04,450 As ons net gaan om te enkripteer met behulp hierdie metode, wat nie slaan 60 00:04:04,450 --> 00:04:09,860 simbole, spasies en nommers, dan het ons kon net gebruik om die veranderlike i as wat 61 00:04:09,860 --> 00:04:12,540 na die indeks in ons sleutel frase met. 62 00:04:12,540 --> 00:04:17,620 Ons moet num_letters_seen te gebruik om te hou spoor van die werklike plek in die 63 00:04:17,620 --> 00:04:21,146 sleutel frase wat ons wil indeks. 64 00:04:21,146 --> 00:04:32,240 So hier, indien die navraag wat ons het, as num_letter_seen mod keyword_length, so 65 00:04:32,240 --> 00:04:34,570 Hoekom moet ons mod deur navraag lengte? 66 00:04:34,570 --> 00:04:36,630 >> Wel, hallo wêreld was 'n goeie voorbeeld. 67 00:04:36,630 --> 00:04:42,310 As die navraag was ABC, dan moet ons om voortdurend te enkripteer deur 'n dan b 68 00:04:42,310 --> 00:04:45,740 dan is c, dan draai terug rond, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Dus moet ons mod deur navraag lengte om terug te draai om. 70 00:04:50,110 --> 00:04:57,280 >> So as dit is 'n hoofletter, dan wil ons te enkripteer deur die 71 00:04:57,280 --> 00:05:01,450 posisie van die letter van die alfabet, wat ons kry deur net 72 00:05:01,450 --> 00:05:06,730 trek uit kapitaal A. En Net so, vir klein letters, het ons 73 00:05:06,730 --> 00:05:13,000 kan die sleutel wat ons wil kry deur trek uit 'n klein. 74 00:05:13,000 --> 00:05:16,910 So, ongeag of die letter in die sleutel frase was 'n kapitale of 75 00:05:16,910 --> 00:05:21,640 klein letter, gaan ons enkripteer met dieselfde bedrag. 76 00:05:21,640 --> 00:05:28,680 >> Nou dat ons ons sleutel, hier sien ons, dat indien boodskap wat ek is 'n hoofletters 77 00:05:28,680 --> 00:05:32,660 karakter, dan wil ons bereken die posisie in die alfabet van daardie 78 00:05:32,660 --> 00:05:39,460 karakter, voeg die sleutel tot dit, draai terug om so dat as ons verby 'n 79 00:05:39,460 --> 00:05:43,170 Z ons gaan terug na 'n, b, c, en so aan. 80 00:05:43,170 --> 00:05:49,070 Dan, uiteindelik, voeg terug op kapitaal A. So ons terug skuif in die [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 omvang van hierdie karakters in plaas van die numeriese posisie in die alfabet 82 00:05:52,010 --> 00:05:53,540 van hierdie karakters. 83 00:05:53,540 --> 00:05:56,610 >> En ons doen dieselfde ding vir klein letters. 84 00:05:56,610 --> 00:06:00,070 Behalwe ons wil trek uit klein A en voeg dit terug in die 85 00:06:00,070 --> 00:06:02,900 einde, kleinletter a. 86 00:06:02,900 --> 00:06:08,120 Let daarop dat num_letter_seen is slegs aangevul indien boodskap wat ek was 87 00:06:08,120 --> 00:06:09,640 alfabetiese. 88 00:06:09,640 --> 00:06:15,790 Dit is hoe ons slaan ruimtes, simbole, en getalle in ons sleutel frase, aangesien 89 00:06:15,790 --> 00:06:20,520 num_letter_seen is wat ons gebruik na die indeks in ons navraag. 90 00:06:20,520 --> 00:06:24,540 >> Ten slotte, in die einde, nou dat die boodskap Ek is geïnkripteer, het ons 91 00:06:24,540 --> 00:06:26,280 druk boodskap i. 92 00:06:26,280 --> 00:06:27,890 En dit is dit. 93 00:06:27,890 --> 00:06:28,670 My naam is Rob. 94 00:06:28,670 --> 00:06:31,020 En dit is Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Speel van musiek] 96 00:06:32,850 --> 00:06:36,651