>> Zamyla Chan: Naj okrepi naše Igra z vigenere šifro.
Vigenere šifra je zelo podoben cesarju,
razen v Cezarju smo opravili v ena celo število, kot je naš ključ.
V vigenere gremo prenesti v besedo.
Torej, če sem hotel premik šifropisom to je CS 50, ki ga ohai,
potem to pomeni, da vsako črko v ohai bo služila kot ključ,
in grem s kolesom čez da je ključna beseda za mojo izmeno
izdelavo šifropisom veliko težje dekodirati.
>> Kaj to pomeni, da premik s ključno besedo?
No, je ključna beseda niz kjer vsaka črka ustreza
do neke celo število izmeno.
Torej, o ustreza ključu 14, h na ključ 7, A ima ključ 0,
tako da ne bi ničesar spremenilo, in potem i je ključ 8.
>> Da sem tekel vigenere A z navadnega besedila to je CS50 dobro,
da bi preprosto dal me nespremenjeni niz.
Opazimo, da je to ustrezalo teče Cezarja s ključem nič.
V bistvu, teče vigenere z vsako posamezno značaja
bi bilo enakovredno delovanje Cezar z iste celo število.
>> Vse je v redu, tako, saj so tako podobni, da sem
pravzaprav priporočamo, da, če vas želim, lahko samo kopirate Caesar
kodo v svoj vigenere kodo.
Stvari se bodo spremenile, ampak vsaj imaš
nekateri hrbtenico, ki jih lahko delati.
Saj so todos enaki želimo da bi dobili ključ, dobili golo besedilo,
Kodirani da golo besedilo, in nato natisnete to.
>> Tako kot Cezar ključ se bo se prenese v kot drugi ukazni vrstici
Trditev v indeksu argv 1, vendar je tokrat drugače
ker mora biti abecednem.
Torej, moramo ponovitev čez vse sam znak v tem ključu
da uporabnik sprejet, in zagotoviti, da je vsak znak abecede
da se nadaljuje.
>> Ko smo to storili, potem smo lahko dobili niz od uporabnika,
tako kot smo prej.
In zdaj smo prišli do srca problema za vigenere,
ki je prav tako kot Cezarja, kako ugotovimo Šifriranje vzorec
in enačba, in Kodirani celoten čistim.
>> Torej, boste opazili, da je Enačba za premik vigenere
je zelo podoben tistemu cesarja.
Edina razlika je v tem namesto enega samega spremenljivega k
prej, zdaj k je podpisani indeks, kaže j črko tipke.
>> Oglejmo si primer.
Povejte, da ste želeli prenesti skrivnost sporočilo na svojo simpatijo, si mi všeč.
No, za ključem, ki ste izberite nekaj, da si
vem, crush ve, da ti je všeč, pand.
Dobro, kako preusmeriti to?
>> No, mi imamo navadnega indeks.
To je na prvo črko in tako da je indeks za naš ključ
ki je v p prva pismo v našem panda besedo.
Torej, premikajo I s p nam x daje, potem pa pospešil čistim indeks.
To nam pride v prostor.
Zdaj, presledek je ne abecedni,
tako, da pomeni, da je samo prenosi pravica več na šifropisom,
damo prostor tam, mi pa ne vnaprej indeks za naš ključ.
Torej, smo še vedno pri p na tej točki.
>> Mi napreduje v naslednji Indeks v našem čistim.
In zdaj, ker je to pismo je male črke l,
smo premik, da z Naslednji indeks v našem ključu.
Ki je, kar je ničla premik, tako da samo postane
L, v našem šifriranim.
Nato smo vnaprej tako čistim in ključni indeks, ker je po abecedi.
Torej bomo še naprej, da dokler ne pridemo do e v kot.
>> Vse je v redu, tako da boste opazili na to poudariti, da je glede na naše ključne indeksa,
smo prišli do konca panda beseda, pa kaj
se zgodi, ko pridemo do naslednjega abecedni pismo v čistim?
No, vse, kar se zgodi, je, da smo ovijte okoli na začetek,
na prvi indeks našega ključa.
Torej, potem premik, da y, ki ga p, da nam n.
In potem smo še zaključna kodiranje naša čistim priti x lvne NOH.
>> Iz tega primera, sem so pokazali, da le vnaprej
na naslednjo črko v ključni besedi če je znak v besedilu
je pismo, tako da isalpha Funkcija bo prišel prav tukaj.
In, tako kot v Caesar, želimo ohranitev primeru isupper in islower.
Torej, dodaj malo V v vašem psevdokoda.
>> Torej, kako ugotoviti ključne premike?
No, če se spomnimo naše razprave o abecednih indeksi v Caesar
problem, je zelo podobna.
>> Kjer A ustreza ASCII vrednost 65, ampak premik 0,
nato pa zadnja črka V abecedo, Z,
ustreza premik od 25 let.
Opazili boste, da je premik je enaka ali ne
pismo je zgornji ali malimi črkami.
>> OK, tako da zdaj, ko vas vedeti, kako ugotovimo,
številčni premik, ki ustreza enemu značaja
pojdimo nazaj v našo enačbo.
Ker imamo dva različna Indeksi tukaj, i in j,
to je namig, da želimo slediti tako naše stališče v čistim
kot tudi naš položaj v besedo, tako tistih, ki so dve ločeni spremenljivki
da želimo ohraniti drži.
>> Zdaj je položaj v naši čistim se bo povečal vsakič,
tako, da se dogaja, da je malo bolj naravnost naprej
v nasprotju s stališčem ključne besede, ki vemo, je, da se ovije okoli,
in včasih prirastek, Včasih ostanejo nespremenjene.
Torej, kako izvajati funkcionalnost
zaviti okoli indeks za ključno besedo?
>> Bom uporabil primer štetje off.
Štetje off je priljubljen način razdeliti ljudi v skupine.
Da sem imel 5 ljudi in sem hotel jih razdeliti v tri skupine,
in potem bi začeti s štetjem off.
Prva oseba, ki bi pravijo, da sem ekipa številka ena,
naslednja oseba bi bila ekipa številka dve, tretja oseba ekipa številka
tri.
Zdaj pa samo želim tri skupine, tako četrta oseba, ki bi dejansko
začeti na začetku, in pravijo, no, jaz sem ekipa številka ena, kot tudi,
in naslednji oseba bi moštvo številka dve.
In od tam, jih lahko potem loči v svoji skupini.
>> Torej, kako lahko uporabim modulo da mi pomaga izvajati
to štetje off oklepajoča funkcijo?
No, prva oseba številka 1, mod 3 nam daje 1.
2 mod 3 nam daje 2, in 3 mod 3 nam daje 0.
>> Četrta oseba, številka 4, mod 3 nam daje 1, nato pa nam 5 mod 3 je 2.
Torej, boste opazili, da čeprav število ljudi, ki sem
povečuje in je nad 3, ker sem jaz modding za 3
Vedno dobim številke 0, 1 in 2.
Nikoli nisem dobil večje od 3.
Torej, tudi če bi imel 10 ljudi, nato pa vse od teh ljudi
bi bila še vedno v skupini 1, 2 ali 0.
>> Torej, zdaj vemo, da če imamo skupino 5 in smo mod vse tiste za 3,
potem pa nikoli ne bo presega skupine 0, 1 ali 2.
Torej, mi ne bo nikoli skupino število, ki je enako 3 ali zgoraj.
Torej, tudi če dodam še pet ljudi, nato pa vsi od njih
bi še vedno dodeljena skupini 0, 1 ali 2 ker sem modding s 3.
Nikoli ne bom, da preseže to zgornjo mejo.
>> OK, tako da vidimo, če lahko uporablja Ta koncept uporabe modulo
zaviti okoli številke skupine in uporabiti
, da vigenere, kjer želimo za uporabo modulo da se ovije okoli
indeks za ključno besedo.
Čeprav smo povečevanje indeks smo vedno
želite zagotoviti, da smo vedno zaviti okoli samega začetka
Nikoli prekoračitev dolžina niza.
>> OK, tako da vem, da bi bilo malo prepričljivo.
Tam je veliko več storiti v tem p nizu.
Torej, se prepričajte, da ste napisali ven dobra psevdokoda zase
da boste razumeli in da postane delo opravljeno.
Poskusite in obravnavati vsak ena vrstica neodvisno
ugotoviti vse malo majhne koščke sestavljanke
preden ga dajo skupaj.
>> Poskrbite, da boste dobili ključ v ukazni vrstici
in zagotoviti, da je po abecedi, dobili golo besedilo od uporabnika,
in nato v Šifriranje, poskrbite, da boste vedo, kako šifriranje z eno črko,
nato napredujejo na celotno niz z vsemi oklepajočo funkcij.
Končno, lahko natisnete šifropisom.
>> Moje ime je Zamyla, in to je bilo vigenere.