>> ROB: Sveiki, aš esu Robas, ir tegul iššifruoti Vigenere programa.
Taigi pirmas dalykas, kurį reikia padaryti, tai tikras vartotojas įves tikėjomės
juos į komandų eilutę.
Taigi, jei argc nėra 2 tai reiškia, kad arba vartotojas neįtraukė eilutę mes
nori būti naudojant kaip mūsų šifravimo eilutę, ar jie
Buvo per daug dalykų.
Ir mes nežinome, ką daryti su tų kitų dalykų.
>> Taigi, mes pasakyti jiems, ką jie turėtų būti įrašytas.
Ir mes grįžtame.
Dabar, darant prielaidą, kad argc buvo 2, mes galime tęsti programos dalimi.
>> Mes slapyvardžius į argv pavadinimas [1]
į kintamojo raktinį žodį.
Taigi, kad mes neturime naudoti pavadinimą argv [1]
visoje programos dalimi.
O gal mes pamiršti, ką tai reiškia, kad ir taip toliau.
Raktažodis yra daug gražiau pavadinimas.
Ir mes iš karto patraukti ilgis mūsų raktinį žodį čia.
>> Gerai, kad dabar mes norime patikrinti, mūsų žodis yra iš tikrųjų galioja.
Raktažodis mes naudojame užšifruoti stygos turėtų būti tik abėcėlės tvarka
simbolių.
Jei vartotojas įveda Neabėcėliniams ženklai, turėtume pasakyti, raktinis žodis
turi būti tik gražų Z ir tada grįžti.
Taigi tai dėl Ciklas per visus simbolių mūsų raktažodį, tikrinimo
kad jei vienas nėra abėcėlės tada mums reikia spausdinti tą įspėjimą.
>> Dabar, kai mes turime šiuo metu, mes žinome, kad seka turi būti teisinga.
Raktažodis turi būti teisinga.
Ir dabar mes turime gauti pranešimą iš vartotojo, kad jie nori mums
užšifruoti su šios pagrindinės frazę.
Taigi, norint gauti šią žinią, turime do while cikle, kad ketina
nuolat gauti eilutę iš vartotojo kol jie įvesti galiojantį eilutę.
>> Tęstinis, matome čia šį kintamąjį, int nun_letters_seen.
Pamatysime, kodėl mes turime kad per sekundę.
Bet tai už linijos ketina pakartoti nuo I lygus 0 visą kelią iki i
Lygu n, o tai reiškia, mes Iteracja per visas įmanomas
simbolių mūsų pranešimo.
Kadangi mes norime užšifruoti visus su mūsų pranešimo simbolių.
Taigi pastebėti mes, jei (isalphamessage [Turiu] nes mes nenorime, užšifruoti
ženklai, kurie nėra abėcėlės.
Jei yra simbolių, tarpų, arba numerius, mes ne
norite šifruoti tų.
>> Dabar, darant prielaidą, kad ji yra abėcėlinis, mes pirmiausia norime išsiaiškinti, ką mes
iš tikrųjų norite užšifruoti pranešimas, naudojant.
Taigi, ką aš turiu galvoje, kad?
>> Tarkime, kad pagrindinis frazės vartotojo Įvestas abc.
Štai ką mes naudojame, norėdami šifruoti.
Dabar naiviai manome, kad tai reiškia, kad norime užšifruoti pirmąjį simbolį
Mūsų Praneðimas 0, nes priemonės sukant charakterį 0.
>> Mes norime užšifruoti antrą simbolį 1, trečiasis simbolis 2,
Ketvirtasis požymis 0, penkta 1, 2 šešta, ir pan.
Bet atsiminkite, kad mes norime praleisti erdvės ir simboliai ir numeriai.
Tai reiškia, kad jei vartotojas buvo įrašytas hello world kaip pranešimą
kad jie nori užšifruoti, tada norime užšifruoti h iki 0
atitinkanti a, e 1, l 2, iki 0 l iki 1 °.
Mes norime praleisti vietos, saugiame iki 2 m, 0, 1, 2, 0, o.
Taigi pastebėti, jei nebūtume praleisti erdvę, tada būtume užkoduota
iki 0 W ir galų gale su neteisingas eilutę.
>> Gerai, tai, ką mes turime kintamąjį num_letters_seen už.
Jei mes tik ketina šifruoti naudojant šis metodas, kuris neturi praleisti
simbolių, tarpų ir skaičiai, tada mes galima tiesiog naudoti kintamąjį i kaip kas
indeksuoti į mūsų pagrindinę frazę.
Mums reikia naudoti num_letters_seen išlaikyti kelio į faktinę vietą, į
pagrindinis frazės, kad mes norime indeksą.
Taigi čia, jei raktažodis turime, jei num_letter_seen mod keyword_length, todėl
kodėl mes turime mod pagal raktažodį ilgio?
>> Na, labas pasaulis buvo geras pavyzdys.
Jei raktažodis abc, tada mes turime nuolat šifruoti pagal tada b
tada C, tada wrap atgal aplink, , b, c, b, c.
Taigi mums reikia mod pagal raktažodį ilgio siekiant wrap atgal aplink.
>> Taigi, jei tai didžiosios raidės, tada mes norime užšifruoti pagal
pozicija tą abėcėlės raidė, kurios mes tiesiog
atimant iš kapitalo A. ir Panašiai mažųjų raidžių, mes
gali gauti raktą, kad mes norime, padarytais atimant iš mažosiomis raidėmis a.
Taigi neatsižvelgiant į tai, ar laiškas į pagrindinių frazė buvo kapitalą arba
mažoji raidė, mes ketiname užšifruoti ta pačia suma.
>> Dabar, mes turime raktą, mes matome čia, kad jei pranešimą i didžiąsias
simbolis, tai mes norime apskaičiuoti pozicija to abėcėlė
pobūdis, pridėti savo raktą į jį, apvyniokite atgal maždaug taip, kad jei mes buvo praeityje
z mes einame atgal į a, b, c, ir pan.
Tada, pagaliau, vėl pridėti kapitalui A. Taigi mes perkelti atgal į [? ASCII?]
diapazonas iš šių simbolių, o ne skaitmeninis pozicija abėcėlėje
Šių simbolių.
>> Ir mes tai darome tą patį dalyką mažosiomis raidėmis.
Išskyrus norime atimti iš mažosiomis Pridėkite jį ir atgal į
pabaigos, mažosiomis raidėmis.
Atkreipkite dėmesį, kad num_letter_seen tik padidinamas, jei pranešimas buvau
Abėcėlinis.
Tai, kaip mes praleisti tarpai, simboliai ir numeriai mūsų pagrindinis frazės, nes
num_letter_seen yra tai, ką mes naudojame indeksuoti į mūsų žodį.
>> Galiausiai, galų gale, dabar tokia žinutė i buvo užšifruotas, mes
spausdinti pranešimą i.
Štai ir viskas.
Mano vardas yra Rob.
Ir tai Vigenere.
>> [Muzikavimo]