>> ROB: Hi, ek is Rob, en laat ons ontsyfer die Vigenere program.
So die eerste ding wat ons moet doen, is om Maak seker dat die gebruiker aangegaan is wat ons verwag
hulle op die opdrag lyn.
So as argc is nie 2 wat beteken dat óf die gebruiker het nie die string ons
wil word met behulp van as ons versleutelen string, of hulle
aangegaan te veel dinge.
En ons weet nie wat om te doen met dié van ander dinge.
>> So het ons vertel hulle wat hulle moet aangegaan het.
En ons terugkeer.
Nou, in die veronderstelling dat argc was 2, ons kan voort te gaan met die res van die program.
>> Ons alias die naam van bevat SPASIES [1]
in die veranderlike navraag.
Sodat ons nie hoef te gebruik die naam bevat SPASIES [1]
in die res van die program.
En miskien sal ons vergeet wat dit beteken en so aan.
Navraag is 'n baie mooier naam.
En ons sal onmiddellik gryp die lengte van ons navraag hier.
>> OK, so nou wil ons dat om te kyk ons navraag is eintlik geldig is.
Die navraag wat ons gebruik snare te enkripteer moet net alfabetiese wees
karakters.
As die gebruiker aangegaan is nie-alfabetiese karakters, moet ons sê, navraag
moet slegs bevat 'n deur Z en dan terug te keer.
So dit vir lus herhaal oor al karakters van ons navraag, kontrole
dat as een is nie alfabetiese dan ons nodig het dat die waarskuwing te druk.
>> Nou, wanneer ons by hierdie punt, ons weet dat die string moet korrek wees.
Die navraag moet korrek wees.
En nou het ons nodig het om die boodskap te kry van die gebruiker wat hulle wil hê ons moet
enkripteer met die sleutel frase.
Sodat die boodskap te kry, het ons 'n doen terwyl loop wat gaan
voortdurend 'n string van die gebruiker totdat hulle 'n geldige string.
>> Voort, hier sien ons hierdie veranderlike, int nun_letters_seen.
Ons sal sien hoekom ons nodig het wat in 'n tweede.
Maar dit vir lus gaan Itereer van i gelyk aan 0 al die pad tot i
gelyk aan n, wat beteken dat ons iterating oor alle moontlike
karakters in ons boodskap.
Omdat ons wil hê al te enkripteer die karakters in ons boodskap.
So sien ons doen as (isalphamessage [I], omdat ons nie wil hê om te enkripteer
karakters wat nie alfabetiese.
As daar simbole, spasies, of nommers, ons doen nie
wil daardie te enkripteer.
>> Nou, met die veronderstelling dat dit alfabeties, Ons wil eers om uit te vind wat ons
eintlik wil enkripteer die boodskap gebruik.
So, wat doen ek dit?
>> Kom ons neem aan dat die sleutel frase die gebruiker aangegaan is ABC.
Dit is wat ons gebruik om te enkripteer.
Nou, naïef, ons dink dit beteken dat Ons wil die eerste karakter te enkripteer
van ons boodskap deur 0, aangesien 'n middel roterende die karakter deur 0.
>> Ons wil die tweede karakter te enkripteer deur 1, derde karakter deur 2,
die vierde karakter met 0, die vyfde deur 1, die sesde met 2, en so aan.
Maar onthou, dat ons wil hê om oor te slaan ruimtes en simbole en getalle.
Dit beteken dat indien die gebruiker aangegaan het hallo wêreld as die boodskap
dat hulle wil hê om te enkripteer, dan ons wil die h te enkripteer deur 0
ooreenstem met die a, die e met 1, die l deur 2, die l met 0, die o deur 1.
Ons wil die ruimte te slaan, geïnkripteer die w deur 2, die o met 0, 1, 2, 0.
So sien, as ons nie oorgeslaan die ruimte, dan sou ons geïnkripteer het
die w deur 0 en geëindig met die verkeerde tou.
>> OK, dit is wat ons nodig het om die veranderlike num_letters_seen vir.
As ons net gaan om te enkripteer met behulp hierdie metode, wat nie slaan
simbole, spasies en nommers, dan het ons kon net gebruik om die veranderlike i as wat
na die indeks in ons sleutel frase met.
Ons moet num_letters_seen te gebruik om te hou spoor van die werklike plek in die
sleutel frase wat ons wil indeks.
So hier, indien die navraag wat ons het, as num_letter_seen mod keyword_length, so
Hoekom moet ons mod deur navraag lengte?
>> Wel, hallo wêreld was 'n goeie voorbeeld.
As die navraag was ABC, dan moet ons om voortdurend te enkripteer deur 'n dan b
dan is c, dan draai terug rond, a, b, c, a, b, c.
Dus moet ons mod deur navraag lengte om terug te draai om.
>> So as dit is 'n hoofletter, dan wil ons te enkripteer deur die
posisie van die letter van die alfabet, wat ons kry deur net
trek uit kapitaal A. En Net so, vir klein letters, het ons
kan die sleutel wat ons wil kry deur trek uit 'n klein.
So, ongeag of die letter in die sleutel frase was 'n kapitale of
klein letter, gaan ons enkripteer met dieselfde bedrag.
>> Nou dat ons ons sleutel, hier sien ons, dat indien boodskap wat ek is 'n hoofletters
karakter, dan wil ons bereken die posisie in die alfabet van daardie
karakter, voeg die sleutel tot dit, draai terug om so dat as ons verby 'n
Z ons gaan terug na 'n, b, c, en so aan.
Dan, uiteindelik, voeg terug op kapitaal A. So ons terug skuif in die [? Ascii?]
omvang van hierdie karakters in plaas van die numeriese posisie in die alfabet
van hierdie karakters.
>> En ons doen dieselfde ding vir klein letters.
Behalwe ons wil trek uit klein A en voeg dit terug in die
einde, kleinletter a.
Let daarop dat num_letter_seen is slegs aangevul indien boodskap wat ek was
alfabetiese.
Dit is hoe ons slaan ruimtes, simbole, en getalle in ons sleutel frase, aangesien
num_letter_seen is wat ons gebruik na die indeks in ons navraag.
>> Ten slotte, in die einde, nou dat die boodskap Ek is geïnkripteer, het ons
druk boodskap i.
En dit is dit.
My naam is Rob.
En dit is Vigenere.
>> [Speel van musiek]