Zamyla Chan: Nézzük fokozzuk játék a Vigenère titkosítást. A Vigenère kódoló algoritmus nagyon hasonlít a Caesar, kivéve Caesar elhaladtunk a Egyetlen integer kulcsfontosságú. Ebben Vigenère megyünk át egy kulcsszót. Tehát, ha akartam, hogy eltolja a rejtjelezett ez CS 50. Ohai, akkor ez azt jelenti, hogy minden egyes levél Ohai fog szolgálni, mint a legfontosabb, és megyek ciklusra hogy a kulcsszó az én műszak így a rejtjelezett sokkal nehezebb dekódolni. Mit jelent az, hogy váltás a kulcsszó? Nos, a kulcsszó egy húr ahol minden betű felel meg Egyes egész műszak. Tehát, az O megfelel egy kulcsfontosságú 14, H egy gombhoz 7, egy kulcsfontosságú 0, így ez nem változtat semmin, és akkor én kulcsfontosságú 8. Mondjuk én futott Vigenère A a sima szöveg ez CS50 jól, amely egyszerűen csak ad me változatlan húr. Figyeljük meg, hogy ez egyenértékű a futó Caesar kulccsal nulla. Sőt, futás Vigenère minden egyes karakter egyenértékű lenne azzal a működési Caesar, hogy ugyanaz a szám. Rendben, szóval, mivel annyira hasonlít lennék valójában azt javasolják, hogy ha szeretnénk, akkor csak másolja a Caesar kódot a Vigenère kódot. A dolgok változnak, de legalább van néhány gerinc, hogy tud dolgozni. Mivel a Todos ugyanazok akarunk hogy a kulcs, hogy a sima szöveg, sifríroz, hogy a sima szöveg, majd nyomtassa ki, hogy. Csakúgy, mint Caesar a kulcs fog telt el, mint a második parancssori szereplő érvelést argv index 1, de ezúttal másként mert kell lennie alfabetikus. Tehát, meg kell végighaladni minden egyetlen karaktert, hogy a legfontosabb hogy a felhasználói telt el, és biztosítja, hogy minden karakter alfabetikus annak érdekében, hogy továbbra is. Amint ezzel megvagy, akkor kaphat a húr a felhasználó, Csak, mint azelőtt. És most jön a szív A probléma Vigenère, ami olyan, mint Caesar, hogyan kitalálni a minta A titkosítás és egyenlet, és sifríroz A teljes nyílt szöveg. Tehát, észre fogod venni, hogy a egyenlete Vigenère műszak nagyon hasonlít a Caesar egy. Az egyetlen különbség az, hogy helyett egy változó K előtt, most k felirat, jelezve a j-edik levél a kulcsot. Nézzünk egy példát. Tegyük fel akart átadni egy titkos Üzenet ra összetörni, kedvellek. Nos, a kulcsot, választani valamit, hogy a tudják összetörni tudja, hogy tetszik, pandák. Rendben, tehát hogyan tolódik ez? Nos, megvan a titkosítatlan index. Ez az első levelet, és így az index számára kulcsfontosságú amely a P, az első levél a panda szó. Tehát, a változó I p ad nekünk x, akkor előre az egyszerű szöveges index. Ez lesz számunkra, hogy a hely. Most, a szóköz ez nem betű, így ez azt jelenti, hogy, hogy csak transzferek jobbról a rejtjelezett, teszünk egy hely van, és mi nem előre az index a gombot. Tehát, még mindig o ezen a ponton. Mi előre a következő index a titkosítatlan. És most, mivel ez írni, a kisbetűs l, csúsztatjuk, hogy a következő index a gombot. Ami egy, ami egy nulla váltás, hogy csak lesz Egy l mi rejtjelezett. Ezután haladunk mind a nyílt szöveg, és kulcsindexet mert alfabetikus. Tehát akkor is, hogy amíg eljutunk az e hasonlóképen. Rendben, észre fogod venni, ezen pont, hogy tekintve a kulcs index, elértük a végét A panda szó, akkor mi történik, amikor eljutunk a következő alfabetikus levelet a titkosítatlan? Nos, csak annyi történik, mi tekerje körbe a kezdet, Az első index a kulcsot. Tehát, akkor váltani, hogy y p, hogy nekünk n. És akkor, mi továbbra befejező kódolás a nyílt szöveg, hogy x lvne noh. Ebből a példából, I megmutatta, hogy csak előre A következő betű a kulcsszó Ha a karakter szöveges formában egy levél, a isalpha funkció jól jöhet ide. És ugyanúgy, mint a Caesar, szeretnénk megőrzése esetén, isupper és islower. Tehát hozzá ez a kis a be pszeudokód. Szóval hogyan lehet kitalálni a kulcsot műszakban? Nos, ha felidézzük vita A betűrendes mutatót a Caesar probléma, ez nagyon hasonlít. Ha A megfelel egy ASCII értéke 65, de egy műszak 0, majd az utolsó levél az ábécé, Z, megfelel egy műszak 25. Észre fogod venni, hogy a váltás azonos-e vagy sem A levél nagybetűs vagy kisbetűs. OK, így most, hogy tudja, hogyan kell kitalálni A numerikus váltás felel meg egyetlen karakter menjünk vissza a egyenletet. Mert van két különböző indexek itt, i és j, ez egy utalás arra, hogy szeretnénk nyomon követni Mindkét helyünket a titkosítatlan valamint a pozícióját a kulcsszó, így ezek két különböző változók hogy meg akarjuk tartani a hold. Most a helyzet a titkosítatlan növekedni fog minden alkalommal, így lesz egy kicsit egyenesen előre szemben a pozíció a kulcsszó, amelyről tudjuk, hogy kell körbegörgetésének és néha növedék néha ugyanaz marad. Tehát, hogyan hajtsák végre a funkcionalitás tekerje körül a index a kulcsszó? Megyek ki a megszámlálhassa példa. Időzítésének egy népszerű módja megosztani az embereket csoportokba. Mondjuk én már 5 ember, és azt akarta, hogy szétszedés három csoportra, nos, akkor azt először időzítésének. Az első ember tenné mondjuk én csapat első számú, A következő személy lenne csapat számát két, a harmadik személy csapat számát három. Most csak azt akarom, három csoport A negyedik személy ténylegesen Kezdjük az elején, és azt mondják, nos, én csapat elsőszámú is, és a következő személy lenne csapat kettes számú. És onnan, akkor majd válnak szét a csoportok között. Tehát, hogyan lehet azt használni modulo hogy segítsen nekem végre ez megszámlálhassa kerületi funkció? Nos, az első ember, 1-es szám, mod 3 ad 1. 2 mod 3 ad 2, és 3 mod 3 ad nekünk 0. A negyedik személy, 4-es számú, mod 3 ad 1, majd 5 mod 3 ad 2. Tehát, akkor veszi észre, hogy bár az embereknek a száma, hogy már növeli, és ez a fenti 3, mivel én modding 3 Én mindig a 0, 1 és 2. Soha nem kap nagyobb, mint 3. Tehát akkor is, ha nem volt 10 emberek, akkor azoknak az embereknek még mindig a csoportokon belül az 1, 2, vagy 0. Tehát, most már tudjuk, hogy ha van egy csoport Az 5 és mi mod az összes ilyen a 3, akkor mi nem is fog haladja meg a csoportok 0, 1, vagy 2. Tehát, mi nem is fog egy csoportba szám, amely egyenlő 3 vagy annál magasabb. Tehát, ha hozzáteszem még öt ember, akkor mindegyik még mindig hozzárendelhető csoportok 0, 1, vagy 2, mert én modding 3. Én soha nem fog meg fogja haladni a sapkát. OK, lássuk, ha tudjuk alkalmazni ez a fogalom használata modulo tekerje körül a csoport számok és alkalmazni hogy Vigenère hol akarunk használni modulo körülveszi Az index a kulcsszó. Annak ellenére, hogy mi megnő Az index mindig szeretnénk, hogy győződjön meg arról, hogy mindig tekerje körbe a kezdetektől sem haladja meg a karakterlánc hossza. OK, így tudom, hogy lehet, egy kicsit nyomasztó. Van egy sokkal több a teendő ebben az o set. Tehát, ügyeljen arra, hogy írjon ki Jó pszeudokód magad hogy érti és hogy megkapja a munkát. Próbáld ki, és kezelni minden egyvonalas függetlenül kitalálni a kis kis darab a puzzle mielőtt azt össze. Győződjön meg arról, hogy lehet kapni A kulcs a parancssorból és biztosítja, hogy ez az alfabetikus, hogy a sima szöveg a felhasználó, majd A titkosítás, győződjön meg róla, tudja, hogyan kell sifríroz egyetlen betű, majd tovább a teljes szöveg minden a kerületi funkciókat. Végül, akkor nyomtassa ki a rejtjelezett. A nevem egy Zamyla, és ez volt Vigenère.