[MUZIKO ludi] ZAMYLA Chan: Estu la implemento Vigenère, iomete pli sekurigi kodita ol Cezaro. La ebenaĵo teksto estas enciphered uzante ŝnuro anstataŭ entjero. Ĉiu alfabeta karakteron en plata teksto estas moviĝis per letero en la ŝlosilvorto. En ĉi tiu ekzemplo, la ŝlosilvorto ohai, ho respondas al ŝanĝo de 14; H al movi de 7; A, ŝanĝo de 0, kaj Mi ŝanĝo de 8. Se vi sukcese implementado via Cezaro ĉifro, ĝi estos bela kadro de kiu vi povas apliki Vigenère. Kiel vi povas vidi, kurante Vigenère kodita kun sola karaktero kiel ŝlosilvorto estas la sama aĵo kiel Cezaro ĉifro. La samaj piedosignoj apliki al Vigenère kiel ili faris en Cezaro. La ŝlosilvorto estas la dua komandlinio argumenton, do vi konsenti li kun argv1. Tiam vi bezonas por kontroli ke la ŝlosilon vorto estas ja ĉiuj alfabeta. Tie estas kie estas alfa povas veni en oportuna. Se vi havas validan ŝlosilvorto, vi havos la forto de la uzanto, kaj poste vi pretas encipher. La Vigenère formulo estas simila al Cezaro formulon, krom nun k igas k suba indico j, indikante la j-a litero de la ŝlosilvorto. Ni paŝo tra ĉi tiu procezo. Diru vi volis sendi mesaĝon al viaj akcidento, mi ŝatas vin, sed vi ne volas ke ĉiu scias. Do vi uzas Vigenère kodita kun la ŝlosilvorto panda, ĉar, nu, vi ankaŭ ŝatas pandas. La unua letero, mi, estos ŝanĝiĝis per p, donante x, 15 literoj post mi, ĉar 15 p estas la 16-a litero de la alfabeto. La sekvantan leteron en la ebenaĵo teksto spaco, tiel ke ne estos moviĝis. Kaj la indekso de la ŝlosilvorto ne ŝanĝos. Tiam la sekva litero en plata teksto estas l, moviĝis per a, kiu ne ŝanĝi la simpla teksto letero al ĉiuj, ĉar a estas la 0th litero de la alfabeto. La procezo daŭras, antaŭi la ŝlosilvorto karaktero ĉiufoje estas letero en la ebenaĵo tekston. Iam la lasta litero en la ŝlosilvorto estas atingita, la ŝlosilvorto kovras ĉirkaŭ kaj ŝanĝoj al la sekvanta ebenaĵo teksto leteron per p. X lvne Noh. Kiom romantika. Do donita al gravulo, kiel vi konverti ke en la respondaj kodita movo? Provu kompari la ASCII valorojn al la ŝanĝo. Eble vi povas trovi rilaton inter la literoj kaj iliaj alfabeta indekso uzante ASCII math. Ĉu vi povas adicii aŭ subtrahi unu signo el alia akiri vi la deziratan rezulton? Memoru ke la movoj por majuskla kaj minuskla literoj estas samaj. Do eble vi devos identigi du similaj formuloj por reprezenti la movo, unu por majuskla ŝlosilvorto karaktero, kaj unu por minuskla tiu. Venonta, memoru, ke la ŝlosilvorto antaŭas nur se la karakteron en plata teksto estas litero kaj tiu la kazo de la ebenaĵo teksto devas esti protektata. Do, se ni rigardas la formulo por la Vigenère movo, estas du indekso variabloj, i kaj j. Gardas spuro de la pozicio en ebenaĵo teksto, kaj la alia la pozicio en la ŝlosilvorto. Sed via simpla teksto eblas multe pli longa ol via ŝlosilvorto, en kiu kazo via ŝlosilvorto indekso bezonas enpaki ĉirkaŭ reen al la komenco de la ŝlosilvorto. Kiel vi faris tion? Ni retrorigardas al la module operatoro. Module estas difinita estas la resto de dividado de du nombroj. Sed kio estas reala praktika uzo de module? Nu, diru vi havas grandan grupon de popolo, kaj vi devas dividi en tri grupoj. Unu maniero dividi homojn en grupojn estas havi ilin kalkuli malproksime. Vi numeron de la grupoj grupo numero 1, 2, kaj 3. La unua persono diros 1, la venonta 2, la proksimaj 3. La persono poste diros 1, ĉar ne ekzistas grupo 4, kaj la grafo komenciĝas super de tie. Vi povas uzi module al fari la samon. Ĉi tiu epoko, la grupoj volo esti grupo 0, 1, kaj 2. La unua persono, nombro 1 module 3, estas 1. Persono 2 module 3 estas 2. Persono 3 module 3 estas 0. Persono 4 module 3 donas 1, kaj tiom la grupoj povas enpaki ĉirkaŭe. Do se vi prenos indekso kaj module ke indico de maksimuma grandeco, la rezulto neniam estos pli granda ol aŭ egala al la grandeco, signifante ke vi povas pliigi la indekso kiel kiom vi deziras. Kaj tiel longe, kiel vi module la indekso de iu numero, vi ne ricevos nombro pli granda ol tio. Do ni havas 10 personoj anstataŭ 5, kaj ili ĉiuj get atribuita al grupoj nombro 0, 1, aŭ 2. Provu apliki ĉi tiu al kroĉas super la ŝlosilvorto, escepte anstataŭ ordigi popolon en grupo numerojn vi volas ke la indekso de la ŝlosilvorto por ke vi povas akiri la rajton karaktero por la movi sen superi la longeco de la kordo. Kun tiu, vi havas vian Vigenère ĉifro. Mia nomo estas Zamyla, kaj ĉi tiu estas CS50.