ROB: Hi, mwen se Rob, e kite yo Decoder pwogram lan Vigenere. Se konsa, premye bagay nou bezwen fè se fè asire w ke itilizatè a te antre nan sa nou espere yo nan liy lan lòd. Se konsa, si arg se pa 2 sa vle di swa itilizatè a pa t 'antre nan nou la fisèl vle yo lè l sèvi avèk kòm chifreman nou fisèl, oswa yo te antre nan twò anpil bagay. Apre sa, nou pa konnen sa yo dwe fè avèk moun ki lòt bagay. Se konsa, nou di yo sa yo ta dwe gen antre nan. Apre sa, nou retounen. Koulye a,, an konsideran ke arg te 2, nou ka kontinye ak rès la nan pwogram nan. Nou alyas non an nan argv [1] nan mo kle a varyab. Se konsa, ke nou pa oblije sèvi ak argv la Non [1] nan tout rès la nan pwogram nan. E petèt nou pral bliye sa sa vle di ak sou sa. Keyword se yon non anpil joli. Epitou, n ap imedyatman gen tan pwan longè a nan mo kle nou isit la menm. OK, se konsa koulye a nou vle tcheke ki mo kle nou an, se aktyèlman ki valid. Mo kle a nou itilize nan ankripte strings yo ta dwe jis pou alfabetik karaktè. Si itilizatè a te antre nan ki pa alfabetik karaktè, nou ta dwe di, mo kle dwe sèlman gen ladan A jiska Z ak Lè sa a, retounen. Se konsa, sa a pou iterates bouk sou tout karaktè nan mo kle nou an, tcheke ke si se yon sèl pa alfabetik Lè sa a, nou bezwen ekri ak lèt ​​detache ki avètisman. Koulye a, yon fwa nou jwenn nan pwen sa a, nou konnen ki fisèl la dwe kòrèk. Mo kle a dwe kòrèk. Epi, koulye a nou bezwen jwenn mesaj ki soti nan itilizatè a yo ke yo ta vle nou ankripte ak sa fraz kle. Se konsa, yo ka resevwa ke mesaj, nou gen yon fè pandan y ap bouk ki nan ale nan kontinyèlman jwenn yon fisèl soti nan itilizatè a jiskaske yo antre nan yon fisèl ki valid. Kontinye, nou wè isit la varyab sa a, Int nun_letters_seen. Nou pwal wè poukisa nou bezwen ke nan yon dezyèm fwa. Men, sa a pou bouk ki pral repňte soti nan mwen egal 0 tout wout la jiska mwen egal n, ki vle di nou ap iteration sou tout sa ki posib karaktè nan mesaj nou an. Paske nou vle ankripte tout karaktè yo nan mesaj nou an. Se konsa, remake nou fè si (isalphamessage [mwen], paske nou pa vle ankripte karaktè ki pa alfabetik. Si gen senbòl, espas, oubyen nimewo yo, nou pa fè sa vle ankripte sa yo. Koulye a, an konsideran ke li se alfabetik, nou premye vle konnen ki sa nou aktyèlman vle ankripte mesaj la lè l sèvi avèk. Se konsa, sa m 'vle di pa sa? Se pou yo asime ke fraz la kle itilizatè a te antre nan te abc. Sa a ki sa nou ap lè l sèvi avèk ankripte. Koulye a, naivman, nou panse ke vle di ke nou vle ankripte karaktè nan premye nan mesaj nou an pa 0, depi yon mwayen wotasyon karaktè a pa 0. Nou vle ankripte karaktè nan dezyèm pa 1, pèsonaj twazyèm pa 2, karaktè nan katriyèm pa 0, senkyèm lan pa 1, sizyèm lan pa 2, ak sou sa. Men, sonje, se sa nou vle sote espas ak senbòl ak nimewo. Sa vle di ke si te gen itilizatè a te antre nan alo mond kòm mesaj la ke yo vle ankripte, lè sa a nou vle ankripte h a pa 0 ki koresponn a yon an, e la pa 1, nan l pa 2, l la pa 0, o a pa 1. Nou vle sote espas ki la, chiffres w la pa 2, o la pa 0, 1, 2, 0. Se konsa, avi, si nou pa t 'sote nan espas, Lè sa a, nou ta gen chiffres w la pa 0 ak te fini ak fisèl la kòrèk. OK, sa a se sa nou bezwen varyab la num_letters_seen pou. Si nou te jis ale nan ankripte lè l sèvi avèk metòd sa a, ki pa sote senbòl, espas, ak nimewo, lè sa a nou te kapab jis itilize varyab la mwen kòm sa endèks nan kle fraz nou an avèk yo. Nou bezwen sèvi ak num_letters_seen kenbe tras nan kote aktyèl la nan la fraz kle ki nou vle Konpayi paran yo. Se konsa, isit la, si mo kle a nou genyen, si num_letter_seen mod keyword_length, se konsa poukisa nou bezwen mod pa longè mo kle? Oke, alo mond se te yon bon egzanp. Si mo kle a te abc, lè sa a nou bezwen kontinyèlman ankripte pa yon Lè sa a, b Lè sa a, c, Lè sa a, vlope tounen alantou li, yon, B, C, A, B, c. Se konsa, nou bezwen mod pa longè mo kle yo nan lòd yo vlope tounen alantou. Se konsa, si sa a se yon lèt majuskul, Lè sa a, nou vle ankripte pa la pozisyon nan lèt sa a nan alfabè a, ki nou jwenn pa jis soustraksyon soti kapital A. Apre sa, Menm jan an tou, pou lèt miniskil, nou ka jwenn kle a ke nou vle pa soustraksyon soti miniskil yon. Se konsa, kèlkeswa si lèt la nan fraz la kle se te yon kapital oswa miniskil lèt, nou ap ale nan ankripte pa menm kantite lajan an. Koulye a, ke nou gen kle nou yo, nou wè isit la, ke si mesaj mwen se yon majuskul karaktè, Lè sa a, nou vle kalkile nan pozisyon nan alfabè a nan ki karaktè, ajoute kle nou nan li, vlope tounen alantou se konsa ke si nou te ale sot pase yo yon z n 'al jwenn tounen nan yon, B, C, ak sou sa. Lè sa a, finalman, ajoute tounen sou kapital A. Se konsa, nou chanjman tounen nan [a? ASCII?] ran de karaktè sa yo olye pou yo nan nimerik pozisyon nan alfabè a nan karaktè sa yo. Lèfini, nou fè menm bagay la pou pi ba karaktè ka. Eksepte nou vle fè soustraksyon soti miniskil yon epi ajoute li sou do yo nan la fen, miniskil yon. Remake num_letter_seen se sèlman enkremante si mesaj mwen te alfabetik. Sa a se ki jan nou sote espas, senbòl, ak nimewo nan kle fraz nou an, depi num_letter_seen se sa nou ap itilize endèks nan mo kle nou yo. Finalman, nan fen a, kounye a ke mesaj mwen te chiffres, nou enprime soti mesaj mwen. Epi sa a, li. Non mwen se Rob. Lè sa a se Vigenere. [MIZIK jwe]