>> Zamyla Chan: Le të rritur tonë Loja me shifër Vigenere.
Vigenere shifër është shumë të ngjashme me Cezarit,
përveç Cezarit kemi kaluar në një numër i plotë vetëm si kyç tonë.
Në Vigenere ne jemi duke shkuar për të kaluar në një fjalen.
Pra, nëse kam kërkuar për të zhvendosur ciphertext kjo është CS 50 nga ohai,
atëherë kjo do të thotë se çdo letër në ohai do të shërbejë si çelës,
dhe unë jam duke shkuar për të ciklit mbi se fjalen per ndryshim tim
duke e bërë koduar shumë e vështirë për të deshifroj.
>> Çfarë do të thotë të zhvendoset nga fjalen?
E pra, fjalen është një varg ku çdo shkronjë i korrespondon
në një ndryshim numër i plotë.
Kështu, o korrespondon me një çelës të 14, h një çelës 7, a ka një çelës prej 0,
kështu që nuk do të ndryshojë asgjë, dhe pastaj i ka çelësin e 8.
>> Thuaj Unë u zhvillua Vigenere A me tekst i thjeshtë, kjo është CS50 mirë,
që thjesht do t'i jepte me një varg të pandryshuara.
Vini re se kjo është e barabartë me drejtimin Cezarin me një çelës të zero.
Në fakt, duke Vigenere me çdo karakter të vetëm
do të jetë e barabartë me drejtimin Caesar me të njëjtin numër të plotë.
>> Të gjithë të drejtë, kështu që, pasi ata janë aq të ngjashme unë do
në fakt rekomandojnë që nëse ju doni ju thjesht mund të kopjoni Cezarit tuaj
Kodi në kodin tuaj Vigenere.
Gjërat do të ndryshojnë, por të paktën ju keni
disa shtylla kurrizore që ju mund të punoni me të.
Sepse Todos janë të njëjta që ne duam për të marrë çelësin, të marrë plain text,
shifroj se plain text, dhe pastaj të shtypura atë jashtë.
>> Ashtu si Cezari çelësi do të të kalojë në si vija e komandës së dytë
Argumenti përfshira në indeksin argv 1, por është ndryshe këtë herë
sepse ajo duhet të jetë alfabetik.
Pra, ne duhet të iterate mbi çdo karakter të vetëm në atë çelës
që përdoruesi kaloi në, dhe për të siguruar se çdo karakter është alfabetik
në mënyrë që të vazhdojë.
>> Pasi të keni bërë këtë, atëherë ne mund të merrni varg nga përdoruesit,
ashtu siç kemi bërë më parë.
Dhe tani, kemi ardhur në zemër e problemit për Vigenere,
e cila është vetëm si Cezarit, si për të gjej modelin enciphering
dhe ekuacioni, dhe shifroj të gjithë plaintext.
>> Pra, ju do të vëreni se Ekuacioni për ndryshim Vigenere
është shumë e ngjashme me atë të Cezarit.
I vetmi ndryshim është se në vend të një k vetme ndryshueshme
më parë, tani ka një k Kaloje, duke treguar letrën jth e kyç.
>> Le të ecin nëpër një shembull.
Thuaj ju të kërkuar për të kaluar një sekret Mesazhi mbi shtrydhje tuaj, unë si ju.
E pra, për çelës tuaj ju zgjidhni diçka që tuaj
e di shtrydhje e di se ju pëlqen, pandat.
Të gjithë të drejtë, kështu që si mund të zhvendoset kjo?
>> E pra, ne kemi indeksin tonë plaintext.
Kjo është në letrën e parë dhe kështu që është indeksi për çelës tonë
e cila është në p, i parë Letra në fjalë tonë panda.
Pra, unë zhvendosur nga p na jep x, pastaj ne të çuar përpara indeksi plaintext.
Kjo na merr në një hapësirë.
Tani, karakteri hapësirë është jo alfabetik,
që nënkupton se, që vetëm transferon të drejtën mbi të ciphertext,
ne kemi vënë një hapësirë ​​aty, dhe ne nuk bëjmë avancojë indeksin për çelës tonë.
Pra, ne jemi ende në p në këtë pikë.
>> Ne përparuar për të ardhshëm Indeksi në plaintext tonë.
Dhe tani, për shkak se kjo është një letër, të vogla l,
ne ndryshim që nga Indeksi i ardhshëm në çelës tonë.
E cila është një, i cili është një zero ndryshim në mënyrë që vetëm të bëhet
një l në ciphertext tonë.
Pastaj, ne të çuar përpara dy plaintext, dhe indeksi i rëndësishëm për shkak se është alfabetik.
Pra, atëherë ne vazhdojmë që deri sa të kemi në e në si.
>> Të gjithë të drejtë, kështu që ju do të vëreni në këtë theksojnë se, përsa i përket indeksit tonë kryesor,
ne kemi arritur në fund të panda fjalë, kështu që çfarë
ndodh kur ne kemi marrë për të ardhshëm Letra alfabetik në plaintext?
E pra, gjithçka që ndodh është që ne përfundojë rreth në fillim,
me indeksin e parë çelës tonë.
Pra, atëherë ne ndryshim që y nga p të na dhënë n.
Dhe pastaj, ne vazhdojmë duke përfunduar kodimin plaintext tonë për të marrë x lvne Noh.
>> Nga ky shembull, unë tregoi se ne vetëm të avancuar
në letër tjetër në fjalen në qoftë se karakteri në tekst të thjeshtë
është një letër kaq të isalpha funksioni do të jetë në dispozicion këtu.
Dhe, ashtu si në Cezari, ne duam të ruajnë rast, isupper dhe islower.
Pra, shtoni këtë pak në në pseudokod tuaj.
>> Pra, si nuk kemi kuptoj se ndërrime kryesore?
E pra, nëse ju kujtohet diskutimin tonë në indekset alfabetike të Cezarit
problem, kjo është shumë e ngjashme.
>> Ku A korrespondon me një ASCII Vlera e 65, por një ndryshim nga 0,
dhe pastaj letra e fundit në alfabetin, Z,
korrespondon me një ndryshim të 25.
Ju do të vëreni se të ndryshim është identike ose jo
letra është rasti e sipërme apo të poshtme.
>> OK, kështu që tani që ju e di se si të kuptoj se
ndryshim numerike që korrespondon me karakter vetme
le të kthehemi ekuacionit tonë.
Sepse ne kemi dy të ndryshme subscripts këtu, i dhe j,
kjo është një aluzion se ne duam për të mbajtur nën të dy pozitën tonë në plaintext
si dhe pozicionin tonë në fjalen, kështu që ata janë dy variabla të veçanta
se ne duam për të mbajtur një të mbajë.
>> Tani, pozicioni në plaintext tonë do të rritet çdo kohë,
në mënyrë që do të jetë një pak më përpara drejt
në krahasim me pozicion fjalen, të cilat ne e dimë ka për të përfunduar rreth,
dhe nganjëherë ardhura, ndonjëherë të qëndrojnë të njëjta.
Pra, si nuk kemi zbatuar funksionalitetin
për të përfunduar rreth Indeksi për fjalen?
>> Unë jam duke shkuar për të përdorur numëruar off shembullin e.
Numërimi off është një mënyrë popullore për të ndarë njerëzit në grupe.
Thuaj kam pasur 5 persona dhe kam kërkuar për të ndarë ato në tre grupe,
dhe atëherë unë do të fillojë duke numëruar off.
Personi i parë do të thonë se unë jam ekipi numër një,
personi tjetër do të jetë numri i ekipit dy, numri ekipi personi i tretë
tre.
Tani, unë vetëm dua tre grupe kështu personi i katërt do të vërtetë
fillojë në fillim dhe të thonë, mirë, unë jam ekipi numër një, si dhe,
dhe personi tjetër do të jetë ekipi numri dy.
Dhe, prej andej, ata pastaj mund ndahen në grupet e tyre.
>> Pra, si mund ta përdor modulo për të ndihmuar me zbatimin e
kjo numërojë përfundojë rreth funksionit?
E pra, personi i parë Numri 1, mod 3 na jep 1.
2 mod 3 na jep 2, dhe 3 mod 3 na jep 0.
>> Personi i katërt, numër 4, 3 mod na jep 1, dhe pastaj 5 mod 3 na jep 2.
Pra, ju do të vini re se edhe pse numri i njerëzve që kam
rrit, dhe është më lart 3, pasi që unë jam modding nga 3
Unë gjithmonë të marrë numrat 0, 1 dhe 2.
Unë kurrë nuk të marrë më të mëdha se 3.
Kështu, pra, edhe në qoftë se kam pasur 10 njerëzit, atëherë të gjithë ata njerëz
do të jetë ende brenda grupeve 1, 2, ose 0.
>> Pra, tani ne e dimë se në qoftë se ne kemi një grup e 5 dhe ne mod gjithë ata nga 3,
atëherë ne nuk jeni do të kalon grupe 0, 1, ose 2.
Pra, ne jemi kurrë nuk do të merrni një grup numër që është e barabartë me 3 ose më lart.
Pra, edhe në qoftë se unë të shtuar pesë të tjerë njerëzit, atëherë të gjithë ata
ende do të caktohen në grupe 0, 1, ose 2 sepse po modding nga 3.
Unë kurrë nuk do të kalojë atë kapak.
>> OK, kështu që le të shohim nëse ne mund të aplikoni ky koncept i përdorur modulo
për të përfunduar rreth Numrat e grupit dhe të aplikojnë
ajo të Vigenere ku duam për të përdorur modulo për të përfunduar rreth
indeksi për fjalen.
Edhe pse ne jemi bën rritjen indeksi ne gjithmonë
dëshironi të bëni të sigurtë që ne gjithmonë përfundojë rreth në fillim
nuk jashtëzakonshme e gjatësia e vargut.
>> OK, kështu që unë e di se mund të jetë pak e madhe.
Ka shumë më tepër për të bërë në këtë p grup.
Pra, sigurohuni që ju të shkruani nga një pseudocode të mirë për veten tuaj
që ju të kuptoni dhe të që merr punën e bërë.
Provo dhe të trajtuar çdo linjë të vetme të pavarur
parafytyruar se të gjithë pak copa të vogla e enigmës
para se të vënë atë së bashku.
>> Sigurohuni që ju mund të merrni çelësi nga vija e komandës
dhe për të siguruar se ajo është alfabetik, merrni tekst të thjeshtë nga ana e përdoruesit,
dhe më pas në enciphering, sigurohuni që ju të e di se si për të shifroj një letër të vetme,
dhe pastaj përparim për të gjithë vargun me të gjitha të përfundojë rreth funksioneve.
Së fundi, ju mund të shtypura të koduar.
>> Emri im është Zamyla, dhe kjo ishte Vigenere.