>> ROB: Hei, jeg er Rob, og la oss dechiffrere den Vigenère programmet.
Så det første vi må gjøre er å lage at brukeren angitt hva vi forventet
dem til på kommandolinjen.
Så hvis argc er ikke to som betyr enten brukeren har ikke skrevet inn strengen vi
ønsker å bruke som vår kryptering strengen, eller de
tastet for mange ting.
Og vi vet ikke hva jeg skal gjøre med de andre tingene.
>> Så vi fortelle dem hva de skulle ha inngått.
Og vi kommer tilbake.
Nå, forutsatt at argc var to, vi kan fortsette med resten av programmet.
>> Vi alias navnet argv [1]
inn i variabelen søkeord.
Slik at vi ikke trenger å bruke navnet argv [1]
gjennom resten av programmet.
Og kanskje vi skal glemme hva det betyr, og så videre.
Keyword er et mye bedre navn.
Og vi vil umiddelbart ta tak i lengden av vår nøkkelord her.
>> OK, så nå ønsker vi å kontrollere at vår søkeordet er faktisk gyldig.
Nøkkelordet vi bruker for å kryptere strenger bør bare være alfabetisk
tegn.
Hvis brukeren inngått ikke-alfabetisk tegn, skal vi si, søkeord
må bare inneholde A til Z og deretter tilbake.
Så dette for løkke gjentar over alt tegnene i vår søkeord, sjekker
at hvis man ikke er alfabetisk da vi trenger å skrive ut den advarselen.
>> Nå, når vi kommer til dette punktet, vi vet at strengen må være riktig.
Nøkkelordet må være riktig.
Og nå må vi få beskjed fra brukeren om at de vil ha oss til
kryptere med at nøkkelen setning.
Så for å få den meldingen, har vi en gjøre mens loop som kommer til å
stadig får en streng fra brukeren før de kommer inn en gyldig streng.
>> Fortsetter, ser vi her denne variabelen, int nun_letters_seen.
Vi får se hvorfor vi trenger at det i et andre.
Men dette for loop kommer til å reagere fra i er lik 0 og helt opp til i
lik n, noe som betyr at vi gjentar over alt mulig
tegn i vårt budskap.
Fordi vi ønsker å kryptere alle tegnene i vårt budskap.
Så merker vi gjøre hvis (isalphamessage [I], fordi vi ikke ønsker å kryptere
tegn som ikke er alfabetisk.
Hvis det er symboler, mellomrom, eller tall, gjør vi ikke
ønsker å kryptere dem.
>> Nå, forutsatt at det er alfabetisk, vi først ønsker å finne ut hva vi
faktisk ønsker å kryptere meldingen med.
Så hva mener jeg med det?
>> La oss anta at nøkkelen frasen den som brukeren var abc.
Det er det vi bruker til å kryptere.
Nå, naivt, tror vi det betyr at vi ønsker å kryptere det første tegnet
av budskapet med 0, ettersom et middel roterende tegnet av 0.
>> Vi ønsker å kryptere andre tegn ved en tredje karakter med 2,
det fjerde tegnet av 0, den femte med 1, den sjette med 2, og så videre.
Men husk, at vi ønsker å hoppe over mellomrom og symboler og tall.
Dette betyr at hvis brukeren hadde angitt hallo verden som meldingen
at de ønsker å kryptere, deretter vi ønsker å kryptere h av 0
svarende til a, e med 1, den l med 2, l ved 0, o etter en.
Vi ønsker å hoppe over plassen, kryptert w med 2, o med 0, 1, 2, 0.
Så legger merke til, hvis vi ikke hadde hoppet over plass, så vi ville ha kryptert
w ved 0 og endte opp med den feil streng.
>> OK, dette er hva vi trenger variabelen num_letters_seen for.
Hvis vi var bare nødt til å kryptere hjelp denne metoden, som ikke hoppe
symboler, mellomrom og tall, så vi kunne bare bruke variabelen i som hva
å indeksere i vår nøkkelen setning med.
Vi må bruke num_letters_seen å holde styr på den aktuelle sted i
nøkkelen setning som vi vil indeksere.
Så her, hvis søkeordet vi har, hvis num_letter_seen mod keyword_length, så
hvorfor trenger vi å mod etter nøkkelord lengde?
>> Vel, hallo verden var et godt eksempel.
Hvis søkeordet var abc, så vi trenger å kontinuerlig kryptere av en så b
deretter c, deretter vikle tilbake rundt, a, b, c, a, b, c.
Så vi trenger å mod etter nøkkelord lengde for å vikle tilbake rundt.
>> Så hvis dette er en stor bokstav, så vi ønsker å kryptere ved
stilling av den bokstaven i alfabetet, som vi får ved bare
trekke ut kapital A. Og Tilsvarende for små bokstaver, vi
kan få nøkkel som vi ønsker ved trekke ut små bokstaver en.
Så uansett om bokstaven i nøkkelen setning var en kapital eller
liten bokstav, skal vi kryptere med samme beløp.
>> Nå som vi har våre viktigste, ser vi her, at hvis meldingen jeg er en stor bokstav
karakter, så vi ønsker å beregne posisjonen i alfabetet til den
karakter, legge vår nøkkel til det, brytes tilbake rundt slik at hvis vi gikk forbi en
z vi går tilbake til a, b, c, og så videre.
Så, endelig, legge tilbake på kapital A. Så vi skifte tilbake i [? Ascii?]
utvalg av disse tegn i stedet for numeriske posisjon i alfabetet
av disse tegnene.
>> Og vi gjør det samme for små bokstaver.
Bortsett fra at vi ønsker å trekke ut små bokstaver en og legge den på igjen i
slutten, små bokstaver en.
Legg merke til at num_letter_seen er bare økes hvis meldingen jeg var
alfabetisk.
Dette er hvordan vi hoppe mellomrom, symboler, og Tallene i vår nøkkelen setning, siden
num_letter_seen er hva vi bruker til indeksen inn søkeord vår.
>> Til slutt, til slutt, nå som melding Jeg har blitt kryptert, vi
skrive ut meldingen jeg.
Og det er det.
Mitt navn er Rob.
Og dette er Vigenère.
>> [Musikk spilles]