>> ROB: Hej, jeg er Rob, og lad os dechifrere den Vigenere programmet.
Så første ting, vi skal gøre, er at gøre sikker på, at brugeren har indtastet hvad vi forventede
dem på kommandolinjen.
Så hvis argc ikke er 2, der betyder enten brugeren ikke indtaste strengen vi
ønsker at bruge som vores kryptering streng, eller de
indtastet for mange ting.
Og vi ved ikke, hvad de skal gøre med de andre ting.
>> Så vi fortælle dem, hvad de burde have indtastet.
Og vi vender tilbage.
Nu antages, at argc var 2, kan vi fortsætte med resten af ​​programmet.
>> Vi alias navn argv [1]
i den variable nøgleord.
Så vi behøver ikke at bruge navnet argv [1]
hele resten af ​​programmet.
Og måske vil vi glemme, hvad det betyder og så videre.
Søgeord er et meget pænere navn.
Og vi vil straks få fat i længden af vores nøgleord lige her.
>> OK, så nu vil vi kontrollere, at vores søgeord er faktisk gyldig.
Nøgleordet vi bruger til at kryptere strenge skulle bare være alfabetisk
tegn.
Hvis brugeren har indtastet ikke-alfabetisk tegn, skal vi sige, søgeord
må kun indeholde A gennem Z og derefter vende tilbage.
Så dette for loop gentager over alle karakterer af vores nøgleord, kontrol
at hvis man ikke er alfabetisk, så vi nødt til at udskrive denne advarsel.
>> Nu, når vi kommer til dette punkt, vi kender at strengen skal være korrekte.
Nøgleordet skal være korrekt.
Og nu er vi nødt til at få besked fra brugeren, at de vil have os til
kryptere med at centrale sætning.
Så for at få den besked, vi har en gøre, mens løkke, der kommer til
løbende får en streng fra brugeren indtil de indtaste en gyldig streng.
>> Fortsætter, ser vi her denne variabel, int nun_letters_seen.
Vi vil se, hvorfor vi har brug for at der i et andet.
Men dette for loop vil gentage fra i lig 0 hele vejen op til i
lig n, hvilket betyder, at vi iteration over alle mulige
tegn i vores budskab.
Fordi vi ønsker at kryptere alle karaktererne i vores budskab.
Så opdager vi gøre, hvis (isalphamessage [I], fordi vi ikke ønsker at kryptere
tegn, der ikke alfabetisk.
Hvis der er symboler, Rygning forbudt, eller tal, vi ikke
vil kryptere dem.
>> Nu, forudsat at det er alfabetisk vi først ønsker at finde ud af, hvad vi
faktisk ønsker at kryptere meddelelsen med.
Så hvad mener jeg med det?
>> Lad os antage, at den centrale sætning brugeren har indtastet var abc.
Det er, hvad vi bruger til at kryptere.
Nu naivt, mener vi, det betyder, at vi ønsker at kryptere det første tegn
i vores budskab med 0, idet et middel rotere tegnet ved 0.
>> Vi ønsker at kryptere det andet tegn med 1, tredje tegn med 2,
det fjerde tegn med 0, den femte med 1, den sjette med 2, og så videre.
Men husk, at vi ønsker at springe mellemrum og symboler og tal.
Dette betyder, at hvis brugeren havde indtastet hej verden som beskeden
at de ønsker at kryptere, så vi ønsker at kryptere h ved 0
svarende til a, e fra 1 til l med 2, l med 0, o med 1.
Vi ønsker at springe over den plads, krypteret w med 2, o med 0, 1, 2, 0.
Så varsel, hvis vi ikke havde sprunget over plads, så vi ville have krypteret
w af 0 og endte med forkert streng.
>> OK, det er hvad vi har brug for den variable num_letters_seen for.
Hvis vi bare skulle kryptere bruge denne metode, som ikke springe
symboler, mellemrum og tal, så vi kunne bare bruge variablen i som hvad
til indeks i vores centrale sætning med.
Vi er nødt til at bruge num_letters_seen til at holde styr på de faktiske sted i
centrale sætning, som vi ønsker at indeksere.
Så her, hvis søgeordet vi har, hvis num_letter_seen mod keyword_length, så
hvorfor har vi brug at mod efter søgeord længde?
>> Nå, hej verden var et godt eksempel.
Hvis søgeordet var abc, så har vi brug til løbende at kryptere med et så b
derefter c, så wrap tilbage omkring, a, b, c, a, b, c.
Så vi er nødt til at Mod af søgeord længde med henblik på at vikle tilbage omkring.
>> Så hvis dette er et stort bogstav, så vi vil kryptere den
position som bogstav i alfabetet, som vi får ved blot
fratrække ud kapital A. And Tilsvarende for små bogstaver, vi
kan få den nøgle, vi ønsker, ved fratrække ud små bogstaver a.
Så uanset om det brev i den centrale sætning var en kapital eller
små bogstaver, vi vil kryptere med samme beløb.
>> Nu, hvor vi har vores nøgle, vi ser her, at hvis budskab jeg er et stort
karakter, så vi ønsker at beregne position i alfabetet af det
karakter, tilføje vores nøgle til det, wrap tilbage rundt, så hvis vi gik forbi en
z vi gå tilbage til a, b, c og så videre.
Så endelig tilføje tilbage på kapital A. Så vi flytter tilbage til [? Ascii?]
række af disse tegn i stedet for numerisk position i alfabetet
af disse tegn.
>> Og vi gør det samme for små bogstaver.
Medmindre vi ønsker at trække ud små bogstaver en og tilføje den igen i
ende, små bogstaver et.
Bemærk at num_letter_seen er kun øges, hvis budskab jeg var
alfabetisk.
Dette er, hvordan vi springe rum, symboler og numre i vores centrale sætning, da
num_letter_seen er, hvad vi bruger til indeks i vores søgeord.
>> Endelig, i sidste ende, nu besked Jeg er blevet krypteret, vi
udskrive budskab jeg.
Og det er det.
Mit navn er Rob.
Og det er Vigenere.
>> [Musikgengivelse]