>> ROB: Hæ, ég er Rob, og við skulum ráða á Vigenere program.
Svo fyrsta sem við þurfum að gera er að gera tryggja að notandinn slegið það sem við ráð fyrir
þeim að í stjórn lína.
Þannig að ef argc er ekki 2 sem þýðir annað hvort notandinn ekki að slá inn strengur við
langar að vera með eins brengla okkar band, eða þeir
inn of marga hluti.
Og við vitum ekki hvað ég á að gera með þeim annars.
>> Þannig að við að segja þeim hvað þeir ætti að hafa slegið inn.
Og við aftur.
Nú, að því gefnu að argc var 2, getum við halda áfram með the hvíla af the program.
>> Við alias nafn argv [1]
í breytunni leitarorð.
Svo að við þurfum ekki að nota nafn argv [1]
allt the hvíla af the program.
Og kannski við munum gleyma hvað það þýðir og svo framvegis.
Leitarorð er miklu betri nafn.
Og við munum þegar í stað grípa lengd leitarorð okkar hérna.
>> OK, svo nú viljum við athuga hvort leitarorð okkar er í raun í gildi.
Leitarorðið sem við notum til að dulkóða strengi ætti bara að vera í stafrófsröð
stafir.
Ef notandinn slær inn ekki stafrófsröð stafir, ættum við að segja, leitarorð
má aðeins innihalda gegnum Z og síðan heim aftur.
Svo þetta fyrir lykkja iterates yfir allt stafina leitarorð okkar, stöðva
að ef maður er ekki í stafrófsröð þá við þurfum að prenta þessi viðvörun.
>> Nú, þegar við að fá að þessum tímapunkti, við vitum að strengurinn verður að vera rétt.
Leitarorðið verður að vera rétt.
Og nú þurfum við að fá skilaboð frá notandinn sem þeir vilja okkur til að
dulkóða með þessi lykill setningu.
Svo til að fá þessi skilaboð, þá erum við með gera á meðan lykkja sem er að fara til
stöðugt fá band frá notanda fyrr en þeir slá inn gilt band.
>> Endurmenntun, sjáum við hér þessa breytu, Int nun_letters_seen.
Við munum sjá hvers vegna við þurfum að á sekúndu.
En þetta fyrir lykkja er að fara að iterate frá ég jafngildir 0 alla leið upp til i
jafngildir n, sem þýðir að við erum iterating yfir allt mögulegt
stafir í skilaboðum okkar.
Vegna þess að við viljum að dulkóða alla stafir í skilaboðum okkar.
Svo taka við að gera ef (isalphamessage [I], vegna þess að við viljum ekki að dulkóða
stafir sem eru ekki í stafrófsröð.
Ef það eru tákn, bil, eða tölur, við gerum ekki
vilt að dulkóða þær.
>> Nú, miðað við að það er stafrófsröð, við viljum fyrst að reikna út hvað við
raunverulega vilt að dulkóða skilaboðin með.
Svo hvað ég meina með því?
>> Skulum gera ráð fyrir að lykillinn setningu notandinn slegið var abc.
Það er það sem við erum að nota til að dulkóða.
Nú, naively, held að við sem þýðir að við viljum að dulkóða fyrsta staf
af skilaboðum okkar um 0, þar sem leið snúa staf um 0.
>> Við viljum að dulkóða annað karakter um 1, þriðja persóna með 2,
fjórða staf með 0, fimmta um 1, sjötta með 2, og svo framvegis.
En mundu, að við viljum sleppa rými og tákn og númer.
Þetta þýðir að ef notandinn hafði slegið Halló heimur sem skilaboðin
sem þeir vilja til að dulkóða, þá við viljum að dulkóða h með 0
sem svarar til A, er e út fyrir 1, sem L með 2, L af 0, o um 1.
Við viljum sleppa rými, brengla w af 2, o um 0, 1, 2, 0.
Svo taka eftir, ef við hefðum ekki sleppt því rúm, þá myndum við hafa dulkóðuð
w af 0 og endaði með The rangur band.
>> OK, þetta er það sem við þurfum að breyta num_letters_seen fyrir.
Ef við værum bara að fara að dulkóða með Þessi aðferð, sem ekki sleppa
tákn, bil og tölur, þá erum við gæti bara notað breyta ég eins og hvað
að kemba í helstu setningu okkar við.
Við þurfum að nota num_letters_seen að halda lag af raunverulegu stað í
lykill setningu sem við viljum að vísitölunni.
Svo hér, ef leitarorðið sem við höfum, ef num_letter_seen unga fólkið keyword_length, svo
hvers vegna þurfum við að unga fólkið eftir leitarorði lengd?
>> Jæja, halló heimur var gott dæmi.
Ef leitarorðið var abc, þá þurfum að stöðugt dulkóða af A þá B
svo c, þá vefja til baka í kring, a, b, c, a, b, c.
Þannig að við þurfum að unga fólkið eftir leitarorði lengd í því skyni að vefja til baka í kring.
>> Þannig að ef þetta er hástafi bréf, þá viljum við að dulkóða með því
stöðu þess staf í stafrófinu, sem við fáum bara með
draga út höfuðborg A. og Sömuleiðis fyrir lágstöfum, við
hægt að fá lykilinn sem við viljum með því að draga út lágstafir a.
Svo óháð því hvort bréf í helstu setningu var hlutafé eða
lágstafir bréf, þá ætlum við að dulkóða um sömu fjárhæð.
>> Nú þegar við höfum lykilinn okkar, sjáum við hér, að ef skilaboðin sem ég er með hástaf
eðli, þá viljum við að reikna staða í stafrófinu á að
eðli, bæta lykill okkar að það, vefja baka kring svo að ef við fórum framhjá
z við förum aftur til a, b, c, og svo framvegis.
Þá loks bæta aftur á höfuðborg A. Svo við vakt aftur í [? ASCII?]
svið af þessum stöfum í stað þess að tölustafir staða í stafrófinu
af þessum persónum.
>> Og við gerum það sama fyrir lágstafi.
Nema við viljum draga út lágstafir a og bæta það aftur á í
endir, lágstafir a.
Takið eftir að num_letter_seen er aðeins hækkuð ef skilaboðin sem ég var
stafrófsröð.
Þetta er hvernig við sleppa rými, tákn og tölur í helstu setningu okkar, þar
num_letter_seen er það sem við erum að nota til vísitölu inn leitarorð okkar.
>> Að lokum, í lok, nú þegar skilaboð Ég hefur verið dulkóðuð, við
prenta út skilaboðin i.
Og það er það.
Mitt nafn er Rob.
Og þetta er Vigenere.
>> [Tónlist spila]