Zamyla Chan: Gadewch i ni gamu i fyny ein gêm gyda y cipher vigenere. Mae'r cipher vigenere yw debyg iawn i Gesar, ac eithrio yn Cesar rydym yn pasio mewn cyfanrif sengl fel ein allweddol. Yn vigenere rydym yn mynd i basio mewn allweddair. Felly, os wyf yn awyddus i symud y ciphertext hyn yw CS 50 erbyn ohai, yna mae hynny'n golygu bod pob llythyr yn ohai yn mynd i wasanaethu fel y allweddol, a dw i'n mynd i feicio dros y gair allweddol ar gyfer fy sifft gan wneud y ciphertext llawer anoddach i ddadgodio. Beth mae'n ei olygu i symud gan y gair allweddol? Wel, yr allweddair yn llinyn lle mae pob llythyr yn cyfateb i ryw sifft cyfanrif. Felly, mae'r o yn cyfateb i allwedd o 14, h i allwedd o 7, mae ganddo allwedd o 0, fel na fyddai'n newid unrhyw beth, ac yna fi ganddo allwedd o 8. Dweud Rhedais vigenere A gyda'r testun plaen yw hyn yn CS50 yn dda, Byddai hynny yn syml yn rhoi mi llinyn heb ei newid. Sylwch fod hyn yn cyfateb i rhedeg Cesar gydag allwedd o sero. Yn wir, yn rhedeg vigenere gydag unrhyw nôd unigol fyddai'n cyfateb i redeg Cesar â'r un cyfanrif. Mae pob hawl, felly, gan fod eu bod mor debyg byddwn i'n mewn gwirionedd yn argymell, os ydych yn eisiau gallwch chi jyst adysgrifia eich Cesar cod i mewn i'ch cod vigenere. bydd pethau'n newid, ond o leiaf mae gennych rhywfaint o asgwrn cefn y gallwch weithio gyda nhw. Oherwydd bod y todos yr un fath yr ydym am i gael y allweddol, yn cael y testun plaen, encipher bod testun plaen, ac yna print that allan. Yn union fel Cesar yr allwedd yn mynd i yn cael eu trosglwyddo i mewn fel yr ail archa bannod dadl a gynhwysir yn y mynegai argv 1, ond mae'n wahanol y tro hwn oherwydd rhaid iddo fod yn nhrefn yr wyddor. Felly, mae angen i ni ailadrodd dros bob cymeriad unigol yn y allweddol bod y defnyddiwr a basiwyd mewn, a sicrhau bod pob cymeriad yn yr wyddor er mwyn parhau. Unwaith y byddwn wedi gwneud hynny, yna rydym yn yn gallu cael y llinyn o'r defnyddiwr, yn union fel y gwnaethom o'r blaen. Ac yn awr, yr ydym yn dod i'r galon o'r broblem i vigenere, sydd yn union fel Cesar, sut i chyfrif i maes y patrwm enciphering a hafaliad, ac encipher y plaintext cyfan. Felly, byddwch yn sylwi bod y hafaliad ar gyfer y sifft vigenere yn debyg iawn i'r un a Cesar. Yr unig wahaniaeth yw bod yn lle k newidyn sengl o'r blaen, yn awr k mae gan isysgrif, dangos y llythyr jth y allweddol. Gadewch i ni gerdded trwy esiampl. Dywedwch eich bod yn awyddus i basio yn gyfrinach Neges ar eich mathru, yr wyf yn hoffi i chi. Wel, ar gyfer eich allwedd chi dewis rhywbeth y mae eich gwybod malwch yn gwybod yr ydych yn hoffi, pandas. Mae pob hawl, felly sut ydym ni'n newid hyn? Wel, rydym wedi ein mynegai plaintext. Dyna yn y llythyr cyntaf a felly yn y mynegai ar gyfer ein allwedd sydd ar y p, y cyntaf llythyr yn ein gair panda. Felly, gan symud i mi o dan p yn rhoi i ni x, yna rydym yn hyrwyddo'r mynegai plaintext. Mae hyn yn ein cael i le. Yn awr, cymeriad gofod yn ddi wyddor, fel eu bod yn golygu, mai dim ond trosglwyddiadau i'r dde dros y ciphertext, rydym yn rhoi lle yno, ac nid ydym yn ei wneud ymlaen llaw y mynegai ar gyfer ein allweddol. Felly, rydym yn dal i fod yn p ar y pwynt hwn. Rydym yn symud ymlaen i'r nesaf mynegai yn ein plaintext. Ac yn awr, oherwydd mae hynny'n llythyr, mae'r llythrennau bach l, rydym yn symud hynny gan y mynegai nesaf yn ein allweddol. Pa yn, sydd yn sero sifft fel mai dim ond yn dod yn yn l yn ein ciphertext. Yna, rydym yn symud ymlaen y plaintext, ac mynegai allweddol am ei fod yn wyddor. Felly, yna rydym yn parhau bod nes i ni gyrraedd y e yn debyg. Mae pob hawl, felly byddwch yn sylwi ar hyn bwyntio hynny, o ran ein mynegai allweddol, rydym wedi cyrraedd diwedd y gair panda, felly beth digwydd pan gawn i'r nesaf llythyr yr wyddor yn y plaintext? Wel, cyfan sy'n digwydd yw ein cofleidiol i'r dechrau, at y mynegai cyntaf o'n allweddol. Felly, yna rydym yn symud y y gan p i roi i ni n. Ac yna, rydym yn parhau gorffen amgodio ein plaintext i gael Noh x lvne. O'r enghraifft hon, yr wyf yn Dangosodd ein bod ond ymlaen llaw i'r llythyr nesaf yn y gair allweddol os bydd y cymeriad mewn testun plaen yn llythyr felly mae'r isalpha Bydd swyddogaeth yn dod i mewn 'n hylaw yma. Ac, yn union fel yn Caesar, rydym am cadw yr achos, isupper a islower. Felly, ychwanegwch ychydig bach hwn mewn i mewn i'ch pseudocode. Felly sut rydym yn chyfrif i maes y sifftiau allweddol? Wel, os ydych yn cofio ein trafodaeth ar fynegeion yr wyddor yn y Caesar broblem, mae'n debyg iawn. Lle A cyfateb i ASCII gwerth o 65 ond newid o 0, ac yna bydd y llythyr diwethaf yn yr wyddor, Z, cyfateb i newid o 25. Byddwch yn sylwi bod y newid yn union yr un fath ai peidio y llythyr yn achos uchaf neu llythrennau bach. Iawn, felly nawr eich bod yn gwybod sut i chyfrif i maes y newid rhifiadol sy'n yn cyfateb i gymeriad sengl gadewch i ni fynd yn ôl at ein hafaliad. Oherwydd bod gennym ddau wahanol subscripts yma, fi a j, dyna awgrym ein bod am gadw golwg y ddau ein safle yn y plaintext yn ogystal â'n safle yn y gair allweddol, felly rheini'n ddau newidyn ar wahân ein bod am gadw gafael. Yn awr, mae'r sefyllfa yn ein plaintext yn mynd i gynyddu bob tro, fel eu bod yn mynd i fod yn ychydig mwy syml yn hytrach na'r sefyllfa yr allweddair, yr ydym yn gwybod wedi i lapio o gwmpas, ac weithiau cynyddiad, weithiau yn aros yr un fath. Felly, sut yr ydym yn gweithredu ymarferoldeb i lapio o amgylch y mynegai ar gyfer y gair allweddol? Rydw i'n mynd i ddefnyddio'r enghraifft cyfrif i ffwrdd. Cyfrif i ffwrdd yn ffordd boblogaidd i rannu pobl i mewn i grwpiau. Dweud Roedd gen 5 o bobl ac roeddwn i eisiau rhannu nhw i fyny i dri grŵp, yn dda yna byddwn yn dechrau drwy gyfrif i ffwrdd. Y person cyntaf fyddai dweud fy mod i'n rhif un tîm, byddai'r person nesaf yn cael ei rif tîm dau, y rhif tîm trydydd person tri. Yn awr, yr wyf yn unig eisiau dri grŵp felly byddai'r pedwerydd person mewn gwirionedd yn dechrau ar y dechrau ac yn dweud, yn dda, rwy'n rhif un tîm yn ogystal, a'r person nesaf fyddai rhif tîm dau. Ac, oddi yno, gallant wedyn ar wahân yn eu grwpiau. Felly, sut y gallaf ddefnyddio modwlo fy helpu i weithredu hyn yn cyfrif off cofleidiol swyddogaeth? Wel, y person cyntaf rhif 1, mod 3 yn rhoi i ni 1. 2 mod 3 yn rhoi i ni 2, a 3 mod 3 yn rhoi i ni 0. Y pedwerydd person, rhif 4, 3 mod yn rhoi 1 ni, ac yna 5 mod 3 yn rhoi 2 inni. Felly, byddwch yn sylwi bod hyd yn oed er y nifer o bobl sydd gennyf yn cynyddu, ac yn uwch 3, ers i mi mod yn modding gan 3 Rwyf bob amser yn cael rhifau 0, 1, a 2. Dwi byth yn cael mwy na 3. Felly, yna, hyd yn oed os wyf wedi 10 pobl, yna i gyd o'r bobl hynny yn dal i fod o fewn grwpiau 1, 2, neu 0. Felly, yn awr rydym yn gwybod bod os oes gennym grŵp 5 ac rydym mod bawb o 3, Yna, rydym yn byth yn mynd i yn fwy na grwpiau 0, 1, neu 2. Felly, rydym yn byth yn mynd i gael grw ^ p Rhif sy'n hafal i 3 neu uwch. Felly, hyd yn oed os wyf yn ychwanegu pump yn fwy pobl, yna pob un ohonynt Byddai dal i gael ei neilltuo i grwpiau 0, 1, 2 neu oherwydd fy mod i'n modding erbyn 3. Nid wyf erioed i'n mynd i fod yn fwy na hynny cap. Iawn, felly gadewch i ni weld os gallwn wneud cais cysyniad hwn o ddefnyddio modwlo i lapio o amgylch y niferoedd grwpiau a gwneud cais iddo i vigenere ble yr ydym am i ddefnyddio modwlo i lapio o gwmpas y mynegai ar gyfer yr allweddair. Hyd yn oed er ein bod yn incrementing mynegai rydym bob amser am wneud yn siŵr ein bod yn bob amser cofleidiol i'r cychwyn cyntaf byth yn fwy na'r hyd y llinyn. Iawn, felly yr wyf yn gwybod y gallai fod yn ychydig yn llethol. Mae llawer mwy i'w wneud yn p hwn set. Felly, gwnewch yn siŵr eich bod yn ysgrifennu allan yn pseudocode da i chi eich hun eich bod yn deall ac sy'n cael y swydd ei wneud. Ceisio mynd i'r afael pob llinell sengl yn annibynnol figuring holl bach darnau bach o'r pos cyn ei roi at ei gilydd. Gwnewch yn siwr y gallwch ei gael yr allwedd o'r llinell orchymyn a sicrhau ei fod yn wyddor, cael y testun plaen gan y defnyddiwr, ac yna yn enciphering, gwnewch yn siŵr eich yn gwybod sut i encipher llythyr unigol, ac yna symud ymlaen i'r llinyn cyfan gyda phob un o'r cofleidiol swyddogaethau. Yn olaf, gallwch argraffu'r ciphertext. Fy enw i yw Zamyla, ac roedd hyn yn vigenere.