>> ROB: Hej, jag är Rob, och låt oss dechiffrera den Vigenère programmet.
Så första vi behöver göra är att göra Se till att användaren angett vad vi förväntat
dem på kommandoraden.
Så om argc är inte 2 som innebär antingen användaren har inte fyllt i strängen som vi
vill använda som vår kryptering sträng, eller de
in för många saker.
Och vi vet inte vad jag ska göra med de andra saker.
>> Så vi berätta för dem vad de borde ha angett.
Och vi återvänder.
Nu, om man antar att argc var 2, kan vi fortsätta med resten av programmet.
>> Vi alias namnet argv [1]
i variabeln nyckelordet.
Så att vi inte behöver använda namnet argv [1]
under resten av programmet.
Och kanske vi ska glömma vad det betyder och så vidare.
Nyckelord är ett mycket trevligare namn.
Och vi kommer genast ta tag i längden av våra sökord här.
>> OK, så nu vill vi kontrollera att våra sökord är faktiskt giltigt.
Nyckelordet vi använder för att kryptera strängar ska bara vara alfabetisk
tecken.
Om användaren angett icke-alfabetisk tecken, ska vi säga, sökord
får endast innehålla A till Z och sedan återvända.
Så detta för slinga itererar över alla tecknen i vår sökord, kontroll
att om man inte är bokstavs då vi måste skriva ut den varningen.
>> Nu, när vi kommer till denna punkt, vi vet att strängen måste vara korrekt.
Sökordet måste vara korrekt.
Och nu måste vi få ut budskapet från användaren om att de vill att vi ska
kryptera med den nyckelfras.
Så för att få detta budskap, vi har en göra medan loop som kommer att
kontinuerligt få en sträng från användaren tills de kommer in en giltig sträng.
>> Fortsatt ser vi här denna variabel, int nun_letters_seen.
Vi får se varför vi behöver som på en sekund.
Men detta för slinga kommer att iterera från i är lika med 0 hela vägen upp till i.
är lika med n, vilket betyder att vi iteration över alla möjliga
tecken i vårt budskap.
Eftersom vi vill kryptera alla karaktärerna i vårt budskap.
Så märker vi göra om (isalphamessage [I], eftersom vi inte vill kryptera
tecken som inte är alfabetisk.
Om det finns symboler, utrymmen, eller siffror, gör vi inte
vill kryptera dem.
>> Nu, om man antar att det är alfabetisk, vi först vill ta reda på vad vi
faktiskt vill kryptera meddelandet med.
Så vad menar jag med det?
>> Låt oss anta att den nyckelfras användaren angett var abc.
Det är vad vi använder för att kryptera.
Nu, naivt, tycker vi det betyder att vi vill kryptera det första tecknet
av vårt budskap med 0, eftersom ett medel roterande karaktären av 0.
>> Vi vill kryptera det andra tecknet med 1, tredje tecknet med 2,
det fjärde tecknet genom 0, den femte med 1, den sjätte av 2, och så vidare.
Men kom ihåg, att vi vill hoppa mellanslag och symboler och siffror.
Det innebär att om användaren hade angett hallå världen som meddelandet
att de vill kryptera, då vi vill kryptera h med 0
svarande mot en, e med 1, den l med 2, l vid 0, o med 1.
Vi vill hoppa över utrymmet, krypterad iw av 2, O vid 0, 1, 2, 0.
Så märker, om vi inte hade hoppat över den utrymme, då vi skulle ha krypterat
w med 0 och slutade med den felaktiga strängen.
>> OK, det här är vad vi behöver variabeln num_letters_seen efter.
Om vi ​​bara skulle kryptera med hjälp av denna metod, som inte hoppar
symboler, mellanslag och siffror, då vi kunde bara använda variabeln i som vad
till index i vår nyckelfras med.
Vi behöver använda num_letters_seen att hålla spår av den faktiska platsen i
nyckelfras som vi vill indexera.
Så här, om sökordet vi har, om num_letter_seen mod keyword_length, så
Varför behöver vi mod efter nyckelord längd?
>> Tja, hallå världen var ett bra exempel.
Om sökordet var abc, då behöver vi att kontinuerligt kryptera med en då b
då c, sedan linda tillbaka runt, a, b, c, a, b, c.
Så vi behöver mod efter nyckelord längd För att linda tillbaka runt.
>> Så om detta är en stor bokstav, då vill vi att kryptera den
ställning av denna bokstav i alfabetet, som vi får genom att bara
subtrahera ut kapital A. Och på samma sätt, för små bokstäver, vi
kan få nyckeln som vi vill ha med subtrahera ut gemener a.
Så oavsett om brevet i nyckelfras var ett kapital eller
liten bokstav, kommer vi att kryptera med samma belopp.
>> Nu när vi har vår nyckel, ser vi här, att om budskapet i är ett versalt
karaktär, då vill vi beräkna position i alfabetet i nämnda
karaktär, lägga till vår nyckel till den, linda tillbaka runt så att om vi gick förbi en
z vi går tillbaka till a, b, c, och så vidare.
Då, äntligen, lägga tillbaka på kapital A. Så vi flytta tillbaka in i [? ASCII?]
sortiment av dessa tecken i stället för den numerisk position i alfabetet
av dessa tecken.
>> Och vi gör samma sak för gemener.
Utom vi vill subtrahera ut gemener a och lägga på den igen i
ände, gemener en.
Lägg märke till att num_letter_seen är endast ökas om det budskap jag var
alfabetisk.
Det är så vi hoppa över utrymmen, symboler, och nummer i vår nyckelfras, eftersom
num_letter_seen är vad vi använder till index i vår sökord.
>> Slutligen, i slutet, nu när meddelandet Jag har krypterats, vi
skriva ut budskap i..
Och det är det.
Mitt namn är Rob.
Och detta är Vigenère.
>> [MUSIK SPELA]