[Speel van musiek] ZAMYLA CHAN: Let's implementeer Vigenere, 'n bietjie meer verseker cipher as keiser. Die gewone teks word gebruik enciphered 'n string in plaas van 'n heelgetal. Elke letter van die alfabet in plain text geskuif word deur 'n brief in die navraag. In hierdie voorbeeld het die navraag ohai, O ooreenstem met 'n skof van 14; H aan 'n skuif van 7, A, verskuiwing van 0; en ek 'n verskuiwing van 8. As jy suksesvol geïmplementeer jou Caesar cipher, sal dit 'n lekker raamwerk waaruit jy kan implementeer Vigenere. Soos jy kan sien, hardloop 'n Vigenere cipher met 'n enkele karakter as 'n navraag is dieselfde ding as 'n keiser cipher. Dieselfde stappe van toepassing op Vigenere soos hulle gedoen het in die keiser. Die navraag is die tweede command line argument, sodat jy dit met argv1. Dan moet jy om te bevestig dat die sleutel woord is inderdaad al alfabetiese. Hier is waar is alfa kan handig te pas kom. As jy 'n geldige navraag, kry jy die sterkte van die gebruiker, en dan is jy gereed om te versleutelen. Die Vigenere cipher formule is soortgelyk na die keiser formule, behalwe nou k raak k subscript j, wat aandui die j-de letter van die navraag. Kom ons stap vir stap deur hierdie proses. Sê jy wou 'n boodskap te stuur na jou crash, ek hou van jou, maar jy doen nie wil almal om te weet. So gebruik jy 'n Vigenere cipher met die navraag Panda, want, wel, jy het ook hou pandas. Die eerste brief, ek sal verskuif word deur p, gee x 15 letters nadat ek, omdat 15 p is die 16 letter van die alfabet. Die volgende brief in die gewone teks is 'n ruimte, so dit sal nie verskuif word nie. En die indeks van die term sal nie verander nie. Toe het die volgende brief in plain text is l, verskuif word deur 'n, wat nie verskuif die gewone teks brief aan almal, want 'n is die 0 letter van die alfabet. Die proses gaan voort, die bevordering van die navraag karakter elke keer as daar 'n brief in die gewone teks. Sodra die laaste letter in die navraag is bereik, die navraag vou om en skuif na die volgende plain teks brief deur p. X lvne Noh. Hoe romanties. So 'n karakter gegee, hoe kan jy omskep wat in die ooreenstemmende becijferen verskuiwing? Probeer om die vergelyking van die ASCII waardes van die skof. Miskien kan jy 'n verhouding tussen die letters en hul alfabetiese indeks met behulp van ASCII wiskunde. Kan jy optel of aftrek een karakter van 'n ander te kry jy die gewenste resultaat? Onthou dat die skofte vir hoofletters en klein letters is dieselfde. So miskien moet jy twee te identifiseer soortgelyke formules te verteenwoordig verskuiwing, een vir 'n hoofletter navraag karakter, en een vir 'n klein een. Volgende, moet jy onthou dat die navraag vooruitgang slegs as die karakter in plain text is 'n brief, en dat die geval van die vlakte teks bewaar moet word. So as ons kyk na die formule vir die Vigenere skuif, is daar twee-indeks veranderlikes, i en j. Een hou van die posisie in plain teks, en die ander die posisie in die navraag. Maar jou gewone teks kan veel langer as jou navraag, in welke geval u navraag indeks moet om te draai om terug te aan die begin van die navraag. Hoe doen jy dit? Kom ons kyk weer na die modulo operateur. Modulo gedefinieer is die res die verdeling van twee getalle. Maar wat is 'n werklike praktiese gebruik van modulo? Wel, sê jy het 'n groot groep van mense, en jy hoef te verdeel in drie groepe. Een manier om mense in groepe te verdeel is om hulle te tel nie. Jy nommer groepe groep nommer 1, 2, en 3. Die eerste persoon wat sal sê 1, die volgende 2, die volgende 3. Die persoon wat na 1 sal sê, want daar is nie 'n groep 4, en die telling begin oor van daar af. Jy kan gebruik om modulo doen dieselfde ding. Hierdie keer het die groepe sal wees groep 0, 1 en 2. Die eerste persoon, getal 1 modulo 3, is 1. Persoon 2 modulo 3 is 2. Persoon 3 modulo 3 is 0. Persoon 4 modulo 3 gee 1, en so die groepe kan rond draai. So as jy 'n indeks en modulo dat indeks met 'n maksimum grootte, die gevolg sal nooit groter as of gelyk aan die grootte, wat beteken dat jy kan die indeks verhoog as soveel as wat jy wil. En so lank as wat jy modulo die indeks deur 'n nommer, sal jy nie 'n aantal groter as dit. So het ons 10 mense in plaas van 5, en hulle sou almal wat raak aan groepe nommer 0, 1, of 2. Probeer om dit toe te pas om te wikkel oor die navraag, behalwe in plaas van sortering mense in die groep nommers wat jy wil hê dat die indeks van die navraag sodat jy kan kry die regte karakter vir die skuif sonder meer as die lengte van die string. Met dit, het jy jou Vigenere cipher. My naam is Zamyla, en dit is CS50.