[Musiikki soi] ZAMYLA Chan: Katsotaanpa toteuttaa Vigenere, hieman turvata cipher kuin Caesar. Tekstimuodossa salataan käyttäen merkkijono sijasta kokonaisluku. Jokainen kirjainmerkki vuonna pelkkää tekstiä on siirtynyt kirjeen hakusana. Tässä esimerkissä avainsana ohai, O vastaa siirtymä 14, H siirtää 7;, siirtyminen 0, ja minä muutos 8. Jos olet onnistuneesti oman Caesar salaus, niin sitten on kiva kehys, josta voi toteuttaa Vigenere. Kuten näette, käynnissä Vigenere salakirjoitus yhdellä luonnetta avainsana on sama asia Caesar-salakirjoitus. Samat vaiheet Vigenere kuten he tekivät Caesar. Avainsana on toinen komentoriviltä argumentti, joten voit käyttää sitä argv1. Sitten sinun täytyy varmistaa, että keskeiset sana on todellakin kaikki aakkosjärjestyksessä. Tässä on, jossa on alfa voi tulla kätevä. Jos sinulla on voimassa oleva avainsanan, saat voimaa käyttäjä, ja sitten olet valmis encipher. Vigenere salakirjoitus kaava on samanlainen Caesar kaava, paitsi nyt k tulee k alaindeksi j, joka osoittaa j: nnen kirjeen avainsanan. Katsotaanpa askel tässä prosessissa. Sano halusi lähettää viestin kaatua, minä pidän sinusta, mutta et haluavat kaikkien tietävän. Joten käytät Vigenere salakirjoitus kanssa Hakusanalla panda, koska hyvin, voit myös kuten pandoja. Ensimmäinen kirjain, minä, on siirtynyt p, jossa x, 15 kirjainta, kun olen, koska 15 p on 16. kirjainmerkki. Seuraavaa kirjainta tekstimuodossa on tila, niin että ei voida siirtää. Ja indeksi avainsanan ei muutu. Sitten seuraava kirjain tekstimuodossa on l, siirretään, joka ei liikahda tekstimuodossa kirjeen ollenkaan, koska on 0. kirjaimen. Prosessi jatkuu, etenee Hakusanalla merkki joka kerta siellä kirjeen tekstimuodossa. Kun viimeinen kirjain avainsana on saavutettu, avainsanan kiertyy ja siirtyy seuraavaan tavallinen tekstin kirjeen s.. X lvne NOH. Miten romanttista. Joten annetaan merkki, miten muuntaa että vastaaviin cipher muutos? Kokeile vertaamalla ASCII arvot muutos. Ehkä löydät suhde välillä kirjaimet ja niiden aakkosellinen hakemisto ASCII matematiikkaa. Voitteko lisätä tai vähentää yhden merkin toisesta päästä voit toivottua tulosta? Muista, että vuorossa isojen ja pienet kirjaimet ovat samat. Joten ehkä sinun täytyy tunnistaa kaksi samanlaisia ​​kaavoja edustamaan shift, yksi isoja Hakusanalla luonnetta, ja yksi ja pieniä yhden. Seuraavaksi muistan, että avainsana ennakot vain, jos merkki pelkkää tekstiä on kirjeen ja että Jos tavallinen teksti on säilytettävä. Joten jos katsomme kaava Vigenere muutos, on olemassa kaksi indeksi muuttujia, i ja j. Yksi pitää kirjaa aseman tavallinen tekstiä, ja toinen asema vuonna avainsanan. Mutta pelkkää tekstiä voi olla paljon pidempi kuin avainsanan, jolloin sinun avainsanahakemistoamme tarvitsee kietoa takaisin alkuun avainsanan. Miten teet tämän? Katsotaanpa takaisin modulo operaattori. Modulo määritellään on jäljellä jakamalla kaksi numeroa. Mutta mitä todellista käytännön käyttö modulo? No, että sinulla on suuri joukko ihmisiä, ja sinun täytyy jakautua kolme ryhmää. Yksi tapa jakaa ihmisiä ryhmiin on ne laskea pois. Olet numero ryhmät ryhmä numero 1, 2, ja 3. Ensimmäinen henkilö sanoa 1, seuraavan 2, seuraava 3. Henkilö sen jälkeen tulee sanoa 1, koska ei ole ryhmä, 4, ja laskenta alkaa yli sieltä. Voit käyttää modulo on tehdä sama asia. Tällä kertaa ryhmät BE Group 0, 1, ja 2. Ensimmäinen henkilö, numero 1 modulo 3, 1. Henkilö 2 modulo 3 on 2. Henkilö 3 modulo 3 on 0. Henkilö 4 modulo 3 on 1, ja niin ryhmät voivat kietoa. Joten jos otat indeksiä modulo että indeksi enimmäiskoko, Tuloksena ei ole koskaan suurempi tai sama koko, mikä tarkoittaa, että voi lisätä indeksin paljon kuin haluat. Ja niin kauan kuin modulo indeksiin Joissakin numero, et saa numeron suurempi. Joten meillä on 10 ihmistä sijasta 5, ja he kaikki saavat luokitellaan ryhmiin numero 0, 1 tai 2. Yritä soveltaa tätä kääre yli Hakusanalla paitsi sijaan lajittelu ihmisiä ryhmään haluamasi numerot indeksi avainsanan jotta voit saat oikean merkin siirtää ylittämättä merkkijonon pituus. Kanssa, että sinulla on Vigenere nolla. Nimeni on Zamyla, ja tämä on CS50.