>> Zamyla Chan: Oletetaan tehostettava pelin vigenere cipher.
Vigenere salakirjoitus on hyvin samankaltainen Caesar,
paitsi Caesar hyväksymämme yhden kokonaisluvun keskeisiä.
Vuonna vigenere aiomme kulkea avainsanan.
Joten, jos halusin siirtää salakieli tämä on CS 50 by Ohai,
niin se tarkoittaa, että jokainen kirjain ohai tulee olla avain,
ja aion syklin yli avainsanan minun shift
jolloin salatekstisen paljon vaikeampi purkaa.
>> Mitä tarkoittaa se, että siirtyvän avainsanan?
No, avainsana on merkkijono jossa jokainen kirjain vastaa
Joidenkin kokonaisluku muutos.
Joten, O vastaa avaimen 14, h avaimen 7, joka on on avaimen 0,
jotta ei muuttaisi mitään, ja sitten i on avain 8.
>> Sano Juoksin vigenere kanssa plain text tämä on CS50 hyvin,
joka yksinkertaisesti antaa minulle ennallaan merkkijono.
Huomaa, että tämä on sama kuin käynnissä Caesar avaimella nolla.
Itse asiassa, käynnissä vigenere yhdenkään yksittäisen merkin
vastaisi käynnissä Caesar sillä samalla kokonaisluku.
>> Selvä, niin, koska ne ovat niin samanlaisia ​​olin
todella suositeltavaa, jos haluavat voit vain kopioida Caesar
koodi vigenere koodia.
Asiat muuttuvat, mutta ainakin olet
Joissakin selkäranka että voit työskennellä.
Koska todos ovat samat haluamme saada avain, saavat pelkkää tekstiä,
salauskäsky että pelkkää tekstiä, ja sitten tulostaa, että ulos.
>> Aivan kuten Caesar avain on menossa välitetään sisään toisena komentoriviltä
argumentti sisältyvät argv indeksiin 1, mutta se on erilainen tällä kertaa
koska se on aakkosjärjestyksessä.
Joten, meidän täytyy kerrata yli jokaisen yksittäisen merkin, että avain
että käyttäjä kului, ja varmistaa että jokainen merkki on aakkosellinen
jotta voidaan jatkaa.
>> Kun olemme tehneet sen, silloin me voi saada merkkijonon käyttäjä,
aivan kuten aikaisemminkin.
Ja nyt tulemme sydämeen Ongelman varten vigenere,
joka on aivan kuten Caesar, miten selvittää salakoodaus malli
ja yhtälö, ja salauskäsky koko selväkielisenä.
>> Joten, huomaat, että yhtälö vigenere shift
on hyvin samanlainen kuin Caesar yhteen.
Ainoa ero on, että sen sijaan, että yksi ainoa muuttuja k
ennen, nyt k on alaindeksi, ilmaisee nnen kirjaimen näppäintä.
>> Käydään läpi esimerkki.
Sano halusi siirtää salainen viestin päälle murskata, pidän teitä.
No, sinun avain valita jotain, että
tietävät murskata tietää, että haluat, pandoja.
Selvä, niin miten me siirtää tämän?
>> No, meillä on selväkielisenä indeksiin.
Se on ensimmäinen kirjain ja joten on indeksi keskeisten
joka on p, ensimmäinen kirjain meidän panda sana.
Joten, siirtämällä I p antaa meille x, Sitten me etukäteen selväkielisenä indeksin.
Tämä saa meidät tilaan.
Nyt välilyönti on ei aakkosellinen,
niin se tarkoittaa, että se vain siirrot oikeus siirrettiin salakieli,
laitamme tilaa siellä, emmekä edetä indeksin keskeisiä.
Joten, ollaan vielä p tässä vaiheessa.
>> Me siirtyä seuraavaan indeksi meidän selväkielisenä.
Ja nyt, koska se on kirjeen, Pienten kirjainten l,
siirrämme että vuoteen seuraava indeksi meidän avain.
Joka on, joka on nolla shift jotta tulee vain
L meidän salakieli.
Sitten me etukäteen molemmat selväkielisenä, ja avain indeksi, koska se on aakkosellinen.
Niin olemme edelleen, että kunnes saamme e samanlaisissa.
>> Selvä, joten huomaat tässä kohta, että kannalta keskeisten indeksin,
olemme päättynyt panda sana, niin mitä
tapahtuu, kun saamme seuraavaan aakkosellinen kirjain selkokielisen?
No, kaikki mitä tapahtuu on meidän kietoa alkuun,
ensimmäiseen indeksi keskeisiä.
Joten, niin siirrämme että y p antaa meille n.
Ja sitten, jatkamme viimeistely koodaus Meidän plaintext saada x lvne noh.
>> Tästä esimerkki, I osoittivat, että me vain etukäteen
seuraavaan kirjeen avainsanan jos merkki tekstimuodossa
on kirjeen niin isalpha toiminto tulee kätevä täällä.
Ja aivan kuten Caesar, haluamme säilyttämiseksi tapauksessa isupper ja islower.
Joten, lisää tämä hieman in omalle pseudokoodilla.
>> Miten siis selvittää avain vuorossa?
No, jos muistaa keskusteluamme on aakkosellinen indeksien Caesar
ongelma, se on hyvin samankaltainen.
>> Jossa A vastaa ASCII arvo 65, mutta muutos 0,
ja sitten viimeinen kirjain aakkosissa, Z,
vastaa siirtymää 25.
Huomaat, että siirtyminen on sama riippumatta siitä,
kirjain on isoja tai pieniä kirjaimia.
>> OK, joten nyt kun osata selvittää
numeerinen muutos, joka vastaa yhden merkin
mennään takaisin meidän yhtälö.
Koska meillä on kaksi erilaista alaindeksit täällä, i ja j,
se vihje, jota haluamme seurata Molempien asemaamme selväkielisenä
sekä asemaamme avainsanan, joten nämä ovat kaksi eri muuttujaa
että haluamme pitää kiinni.
>> Nyt asema meidän selväkielisenä tulee lisääntymään joka kerta,
niin että tulee olemaan hieman suoraan eteenpäin
toisin kuin asentoon avainsanan, jonka tiedämme on kietoa,
ja joskus kasvattaa, joskus pysyvät samoina.
Joten, miten toteutamme toiminnallisuutta
kietoa indeksi avainsanan?
>> Aion käyttää laskea pois esimerkki.
Counting pois on suosittu tapa jakaa ihmiset ryhmiin.
Sanoa oli 5 henkilöä ja halusin jakaa ne kolmeen ryhmään,
no sitten alkaisi laskemalla pois.
Ensimmäinen henkilö olisi sanoa, olen joukkue ykkönen,
seuraava henkilö olisi joukkuenumero kaksi, kolmas henkilö joukkuenumero
kolme.
Nyt haluan vain kolme ryhmää niin Neljännen henkilö olisi todella
aloittaa alusta ja sanoa, hyvin, olen joukkue ykkönen samoin,
ja seuraava henkilö Olisi joukkue numero kaksi.
Ja sieltä, he voivat sitten erotella niiden ryhmiin.
>> Joten, miten voisi käytän modulo auttaa minua toteuttamaan
Tämän laskea pois kietoa funktio?
No, ensimmäinen henkilö numero 1, mod 3 antaa meille 1.
2 mod 3 antaa meille 2, ja 3 mod 3 antaa meille 0.
>> Neljäs henkilö, numero 4, mod 3 antaa meille 1, ja sen jälkeen 5 mod 3 antaa meille 2.
Joten, huomaat että vaikka joukko ihmisiä, jotka minulla on
lisää, ja on yli 3, koska olen modding 3
Olen aina numerot 0, 1, ja 2.
En koskaan suurempi kuin 3.
Niin, vaikka olen ollut 10 ihmisiä, niin kaikki nämä ihmiset
olisi silti ryhmissä 1, 2, tai 0.
>> Joten nyt me tiedämme, että jos meillä on ryhmä 5 ja me mod kaikki nämä 3,
Sitten emme koskaan ylittävät ryhmät 0, 1, tai 2.
Joten, emme koskaan saa ryhmään määrä, joka on yhtä suuri kuin 3 tai enemmän.
Joten, vaikka voin lisätä viisi ihmisiä, niin ne kaikki
olisi silti luokitellaan ryhmiin 0, 1, tai 2 koska olen modding 3.
En koskaan ylittää tämän korkki.
>> OK, joten katsotaanpa voimme soveltaa tämä käsite käyttäen modulo
kietoa ryhmä numeroita ja soveltaa
se vigenere missä haluamme käyttää modulo kietoa
indeksin avainsanan.
Vaikka olemme monesko indeksi aina
haluavat varmistaa, että aina kietoa sen alusta alkaen
koskaan ylittää langan pituutta.
>> OK, joten tiedän se voisi olla hieman ylivoimainen.
Siellä on paljon enemmän tekemistä tämän p asetettu.
Joten varmista, että kirjoitat ulos hyvä pseudokoodi itse
että ymmärrät ja että saa työtä tehdä.
Kokeile ja käsitellä kaikkia yhdellä rivillä itsenäisesti
mietitään kaikki pikku pieni palapelin palaset
ennen sen yhdessä.
>> Varmista, että saat avain komentoriviltä
ja varmistaa, että se on aakkosellinen, saat vain teksti käyttäjä,
ja sitten salakoodaus, varmista osaavat encipher yhdestä kirjaimesta,
ja sitten edetä koko merkkijonon kaikkien Ulottumamitan toimintoja.
Lopuksi voit tulostaa salakieli.
>> Nimeni on Zamyla, ja tämä oli vigenere.