>> ROB: Hoi, ik ben Rob, en laten we ontcijferen het Vigenere programma.
Dus eerste wat we moeten doen is het maken ervoor dat de gebruiker heeft ingevoerd wat we verwacht
ze op de opdrachtregel.
Dus als argc is niet 2 dat betekent ofwel de gebruiker heeft de string die we niet betreden
willen gebruiken als onze versleutelen tekenreeks of zij
ingevoerd te veel dingen.
En we weten niet wat te doen met die andere dingen.
>> Hen zo vertellen we wat ze zou ingaan.
En we terugkeren.
Nu, in de veronderstelling dat argc was 2, we kunnen verder met de rest van het programma.
>> We alias de naam van argv [1]
in de variabele zoekwoord.
Zodat we niet hoeven te Gebruik de naam argv [1]
de rest van het programma.
En misschien zullen we vergeten wat betekent enzovoort.
Zoekwoord een veel leukere naam.
En we zullen onmiddellijk grijpen de lengte van onze trefwoord hier.
>> OK, dus nu willen we controleren dat onze trefwoord is eigenlijk geldig.
Het sleutelwoord we gebruiken om strings te coderen moet gewoon alfabetisch zijn
karakters.
Als de gebruiker niet-alfabetische ingevoerd karakters, moeten we zeggen, trefwoord
mag alleen een door bevatten Z en dan terug.
Dus deze for loop over alle tekens van onze trefwoord, het controleren
dat als men niet alfabetisch dan moeten we die waarschuwing af te drukken.
>> Nu, als we eenmaal op dit punt, we weten dat de tekenreeks juiste moet zijn.
Het zoekwoord moet correct zijn.
En nu moeten we de boodschap uit de gebruiker dat ze willen dat we
versleutelen met die sleutelzin.
Dus om die boodschap te krijgen, hebben we een do while lus die gaat
continu krijgen een string van de gebruiker totdat ze een geldig string.
>> Verder te gaan, zien we hier deze variabele, int nun_letters_seen.
We zullen zien waarom we nodig hebben dat in een tweede.
Maar deze lus gaat herhalen van i gelijk is aan 0 helemaal naar i
gelijk aan n, wat betekent dat we itereren over alle mogelijke
personages in onze boodschap.
Want we willen allemaal versleutelen de personages in onze boodschap.
Zo merken we doen als (isalphamessage [I], omdat we niet willen versleutelen
tekens die niet alfabetisch.
Als er symbolen, spaties of cijfers, doen we niet
willen die coderen.
>> Nu, aannemende dat het alfabetisch, we willen eerst uitzoeken wat we
eigenlijk wilt versleutelen het bericht gebruikt.
Dus wat moet ik daarmee?
>> Laten we aannemen dat de sleutelzin de gebruiker heeft ingevoerd was abc.
Dat is wat we gebruiken om te versleutelen.
Nu, naïef, denken wij dat betekent dat we willen het eerste teken coderen
onze boodschap door 0, aangezien middel het draaien van de teken door 0.
>> We willen naar de tweede letter versleutelen met 1, derde teken door 2,
het vierde teken van 0, de vijfde met 1, de zesde van 2, enzovoort.
Maar vergeet niet, dat wij willen overslaan spaties en symbolen en getallen.
Dit betekent dat als de gebruiker had ingevoerd hallo wereld als de boodschap
dat ze willen versleutelen, dan we willen versleutelen van de h door 0
overeenkomend met de a, e met 1, l door 2, de l door 0, de o door 1.
We willen de ruimte overslaan, versleutelde w door 2 o door 0, 1, 2, 0.
Dus merken, als we niet hadden overgeslagen de ruimte, dan zouden we hebben gecodeerd
de w door 0 en eindigde met de verkeerde snaar.
>> OK, dit is wat we de variabele nodig num_letters_seen voor.
Als we alleen zouden gaan coderen met behulp van Deze methode, die niet doorgaan
symbolen, spaties en getallen, dan kunnen we kon gewoon gebruik maken van de variabele i als wat
naar index in onze sleutelzin met.
We moeten num_letters_seen gebruiken om te houden spoor van de werkelijke plaats in de
sleutelzin die we willen indexeren.
Hier, als het zoekwoord we, indien num_letter_seen mod keyword_length, dus
waarom hebben we nodig om te modden op trefwoord lengte?
>> Nou, hallo wereld was een goed voorbeeld van.
Als het zoekwoord abc was, dan moeten we om continu te versleutelen met een toen b
dan c, dan wikkel terug rond, a, b, c, a, b, c.
Dus moeten we mod op trefwoord lengte om achterom te wikkelen.
>> Dus als dit een hoofdletter, dan willen we versleutelen door de
positie van die letter in het alfabet, die we krijgen door gewoon
aftrekken van zijn kapitaal A. En Ook voor kleine letters, we
kan de sleutel die we willen krijgen door af te trekken uit kleine letters een.
Dus ongeacht of de brief in de sleutelzin was een kapitaal of
kleine letter, gaan we versleutelen met hetzelfde bedrag.
>> Nu we onze sleutel zien we hier, dat als boodschap i een hoofdletter
karakter, dan willen we berekenen de positie in het alfabet van die
karakter, voeg onze sleutel tot het, wikkel terug rond zodat als we langs gingen een
z we terug naar a, b, c, en ga zo maar door.
En dan, eindelijk, weer toevoegen aan het kapitaal A. Dus verschuiven we terug in de [? Ascii?]
bereik van deze tekens in plaats van de numerieke positie in het alfabet
van deze tekens.
>> En we hetzelfde doen voor kleine letters.
Behalve wij willen aftrekken uit kleine letters een en voeg het terug in de
einde, kleine letters een.
Merk op dat num_letter_seen slechts verhoogd als boodschap ik was
alfabetisch.
Dit is hoe we overslaan spaties, symbolen en nummers in onze sleutelzin, aangezien
num_letter_seen is wat we gebruiken naar index in onze zoekwoord.
>> Tenslotte uiteindelijk nu boodschap i is versleuteld, we
uitprinten bericht i.
En dat is het.
Mijn naam is Rob.
En dit is Vigenere.
>> [Muziek]