Zamyla Chan: Anem a intensificar els nostres joc amb el xifrat Vigenère. El xifrat Vigenère és molt similar al Cèsar, excepte en Caesar passem a un sol número sencer com la clau. En Vigenère anem per passar d'una paraula clau. Així que, si volia canviar el text xifrat és CS 50 per ohai, llavors això vol dir que cada lletra en ohai va servir com la clau, i jo vaig al llarg del cicle aquesta paraula clau per el meu torn fer que el text xifrat molt més difícil de desxifrar. Què significa per a canviar per la paraula clau? Bé, la paraula clau és una cadena en el qual cada lletra correspon a algun canvi de número sencer. Per tant, l'o correspon a una clau de 14, h a una tecla de 7, a té una clau de 0, de manera que no canviaria res, i després i té una clau de 8. Dir que em vaig trobar Vigenère A amb el text pla això és així CS50, això seria simplement donar em una cadena sense canvis. Observi que això és equivalent a César corrent amb una clau de zero. De fet, s'executa Vigenère amb qualsevol caràcter individual seria equivalent a córrer César amb el mateix nombre sencer. Molt bé, pel que, des que són tan similars que havia realment recomano que si volen que vostè pot copiar el seu Caesar codi en el codi Vigenère. Les coses canviaran, però almenys vostè té alguns columna vertebral que es pot treballar amb ells. A causa que el Tots són els mateixos que volem per obtenir la clau, obtenir el text pla, encipher que el text sense format, i després imprimir això. Igual que Cèsar, la clau va a s'ha passat com la segona línia d'ordres argumentació continguda en l'índex de argv 1, però aquest cop és diferent perquè ha de ser alfabètic. Per tant, hem de iterar sobre cada caràcter únic en aquesta tecla que l'usuari va passar a, i assegurar que cada caràcter és alfabètic per tal de continuar. Un cop hem fet això, llavors tenim pot obtenir la cadena de l'usuari, tal com ho vam fer abans. I ara, arribem al cor del problema per Vigenère, que és igual que César, com esbrinar el patró de xifrat i l'equació, i encipher tot el text en clar. Per tant, s'adonarà que la equació per al canvi Vigenère és molt similar a la de César. L'única diferència és que en lloc d'una sola variable k abans, ara k té un subíndex, que indica la lletra j-èsima de la clau. Anem a caminar a través d'un exemple. Digues que vols passar un secret missatge en el seu aixafament, m'agrada vostè. Bé, perquè la seva clau triar una cosa que la seva saber aixafament sap que li agrada, pandes. Molt bé, així que com canviem això? Bé, tenim el nostre índex de text pla. Això és a la primera lletra i pel que és l'índex de la clau que es troba a la p, la primera lletra a la nostra paraula colla. Per tant, el canvi que per p ens dóna x, a continuació, s'avança l'índex de text pla. Això ens porta a un espai. Ara, el caràcter d'espai no és alfabètic, el que significa que, que acaba transferències a dreta sobre el text xifrat, posem un espai allà, i no ho fem avançar en l'índex de la clau. Per tant, encara estem en p en aquest punt. S'avança a la següent índex en el nostre text pla. I ara, ja que és una carta, la l minúscula, ens desplacem per la qual índex següent a la clau. La qual cosa és una, que és un zero desplaçament de manera que només es converteix un l en el nostre text xifrat. A continuació, s'avança tant el text en clar, i l'índex de clau perquè és alfabètic. Així que després continuem fins arribar a la direcció de similars. Molt bé, pel que es donarà compte en aquest assenyalar que, en termes de l'índex de clau, hem arribat al final de la paraula colla, així que el que succeeix quan s'arriba a la següent lletra de l'alfabet en el text en clar? Bé, tot el que succeeix és que embolicar al voltant de al principi, per al primer índex de la clau. Per tant, a continuació, ens desplacem que I per p per donar-nos n. I llavors, vam seguir acabant codificació nostre text pla per aconseguir Noh x lvne. A partir d'aquest exemple, Vam demostrar que només avancem a la següent lletra de la paraula clau si el personatge en text sense format és una carta pel que el isalpha funció serà molt útil aquí. I, igual que en César, volem preservar el cas, isupper i islower. Per tant, afegir aquest poc en en el seu pseudocodi. Llavors, com podem esbrinar els canvis clau? Bé, si vostè recorda la nostra discussió en els índexs alfabètics al Caesar problema, és molt similar. On A correspon a un ASCII valor de 65, però un canvi de 0, i després l'última lletra en l'alfabet, Z, correspon a un desplaçament de 25. Es donarà compte de que el canvi és idèntic o no la lletra és majúscula o minúscula. OK, així que ara que vostè saber com esbrinar el canvi numèric que correspon a un únic caràcter Tornem a la nostra equació. A causa de que tenim dos diferents subíndexs aquí, I i J, això és un indici que volem fer un seguiment tant de la nostra posició en el text pla així com la nostra posició en la paraula clau, Així que aquests són dues variables independents que volem mantenir un celler de. Ara, la posició en la nostra de text clar augmentarà cada vegada, per la qual cosa serà una mica més cap endavant recta en oposició a la posició de la paraula clau, que sabem que ha de embolicar al voltant, i, de vegades d'increment, de vegades sent el mateix. Llavors, com podem posar en pràctica la funcionalitat per embolicar al voltant de la Índex de la paraula clau? Vaig a fer servir l'exemple, compti. Comptant és una forma popular per dividir la gent en grups. Dir que tenia 5 persones i volia dividir-les en tres grups, bo, llavors m'agradaria començar explicant fora. La primera persona el faria diuen que sóc número u de l'equip, la següent persona seria el nombre d'equip 2, el nombre de l'equip tercera persona 3. Ara, l'únic que vull tres grups pel la quarta persona faria realitat començar pel principi i dir, bo, jo sóc número u de l'equip, així, i la següent persona seria l'equip número dos. I, a partir d'aquí, es pot llavors separar en els seus grups. Llavors, com podria jo fer servir mòdul que m'ajudi a implementar Aquest recompte de reciclatge de la funció? Bé, la primera persona número 1, mod 3 ens dóna 1. 2 mod 3 ens dóna 2, i 3 mod 3 ens dóna 0. La quarta persona, nombre 4, 3 mod ens dóna 1, i després 5 mod 3 ens dóna 2. Per tant, es donarà compte de que tot i el nombre de persones que tinc augmenta, i està per sobre 3, ja que estic modding per 3 Sempre em donen els números 0, 1 i 2. Mai amb si gran que 3. Així doncs, fins i tot si tingués 10 persones, i totes aquestes persones encara seria dins dels grups 1, 2, o 0. Així que, ara sabem que si tenim un grup de 5 i ens mod tots els de 3, llavors mai anem a excedeixi els grups 0, 1, o 2. Per tant, mai aconseguirem un grup nombre que és igual a 3 o superior. Per tant, fins i tot si afegeixo cinc la gent, llavors tots ells seguirien estant assignat als grups 0, 1, 2 o perquè estic modding per 3. Mai vaig a ser superior a la tapa. OK, així que anem a veure si podem aplicar aquest concepte de la utilització de mòdul per embolicar al voltant de la nombres de grup i aplicar a on volem Vigenère utilitzar per embolicar al voltant de mòdul l'índex de la paraula clau. Tot i que estem incrementant l'índex que sempre voldrà assegurar-se que sempre embolicar al principi sense excedir mai el longitud de la cadena. OK, així que sé que podria ser una mica aclaparador. Hi ha molt més que fer en aquest joc pàg. Per tant, assegureu-vos que escrigui un bon pseudocodi per a vostè que entén i que fa la feina. Tractar de fer front a totes les sola línia independent esbrinar tots els petits petites peces del trencaclosques abans de posar-ho junts. Assegureu-vos que vostè pot aconseguir la clau de la línia d'ordres i assegureu-vos que és alfabètic, obtenir el text pla de l'usuari, i després en el xifrat, assegureu-vos saber com xifrar una sola lletra, i després progressar a tota la cadena de amb tota l'embolcall al voltant de funcions. Finalment, es pot imprimir el text xifrat. El meu nom és un Zamyla, i això va ser Vigenère.