>> ROB: Bună, eu sunt Rob, și să descifreze programul Vigenere.
Deci, primul lucru pe care trebuie să faceți este să facă vă că utilizatorul a introdus ceea ce ne-am asteptat
le la linia de comandă.
Deci, dacă argc nu este 2, care înseamnă fie utilizatorul nu a intrat WE șir
Vreau să fie folosind ca criptarea nostru șir, sau ei
a intrat prea multe lucruri.
Și nu știu ce să fac cu aceste alte lucruri.
>> Așa că le spun ceea ce ei ar fi intrat.
Și ne vom întoarce.
Acum, presupunând că argc a fost de 2, putem continua cu restul programului.
>> Noi alias numele de argv [1]
în cuvântul cheie variabilă.
Astfel că nu trebuie să utilizați argv nume [1]
în restul programului.
Și poate vom uita ce asta înseamnă și așa mai departe.
De cuvinte cheie este un nume mult mai frumos.
Și ne vom apuca imediat lungimea de cuvinte cheie noastre aici.
>> OK, așa că acum ne-o dorim pentru a verifica dacă cuvinte cheie nostru este de fapt valabil.
Cuvântul cheie care le folosim pentru a cripta siruri de caractere ar trebui să fie doar alfabetică
caractere.
În cazul în care utilizatorul a introdus non-alfabetică caractere, ar trebui să spunem, de cuvinte cheie
trebuie să conțină numai de la A la Z și apoi să se întoarcă.
Deci, acest lucru pentru reiterează bucla peste tot caractere de cuvinte cheie noastre, verificarea
că în cazul în care unul nu este în ordine alfabetică, atunci avem nevoie pentru a imprima ca avertisment.
>> Acum, odată ce vom ajunge la acest punct, știm că șirul trebuie să fie corecte.
Cuvântul cheie trebuie să fie corecte.
Și acum avem nevoie pentru a obține mesajul de la utilizatorul care ne doresc să
cripta cu fraza cheie.
Deci, pentru a obține acel mesaj, avem un face în timp ce bucla, care se va
obține în mod continuu un șir de utilizator până când intră un șir valid.
>> Continuand, vom vedea aici această variabilă, Int nun_letters_seen.
Vom vedea de ce avem nevoie că într-o secundă.
Dar acest lucru pentru bucla se va repeta de i este egal cu 0 tot drumul până la i
este egal cu n, ceea ce înseamnă că suntem iterarea peste tot posibil
caractere în mesajul nostru.
Pentru că vrem să cripta toate de caracterele din mesajul nostru.
Deci observa facem în cazul în care (isalphamessage [I], pentru că nu vrem să cripta
caractere care nu sunt în ordine alfabetică.
Dacă există simboluri, spații, sau numere, noi nu facem
Vreau să cripta cele.
>> Acum, presupunând că aceasta este în ordine alfabetică, ne-o dorim în primul rând să ne dăm seama ce ne-am
de fapt, doresc să cripta mesajul folosind.
Deci, ce vreau să spun cu asta?
>> Să presupunem că fraza-cheie utilizatorul a introdus a fost abc.
Asta este ceea ce suntem utilizați pentru a cripta.
Acum, în mod naiv, credem că înseamnă că ne-o dorim pentru a cripta primul caracter
mesajului nostru de 0, deoarece un mijloc rotirea caracterul de 0.
>> Vrem să cripta al doilea caracter de 1, al treilea caracter de 2,
patrulea caracter de 0, a cincea de 1, al șaselea de 2, și așa mai departe.
Dar tine minte, pe care ne-o dorim pentru a sări spații și simboluri și numere.
Acest lucru înseamnă că, în cazul în care utilizatorul a intrat Bună ziua lume ca mesajul
că doresc să cripta, apoi ne-o dorim pentru a cripta h de 0
corespunzătoare a, e de 1, l de 2, L de 0, O prin 1.
Vrem să săriți peste spațiul, criptat w de 2, O prin 0, 1, 2, 0.
Deci observați, dacă nu am fi sărit spațiu, atunci ne-ar fi criptat
w de 0 și sa încheiat cu șir incorect.
>> OK, aceasta este ceea ce avem nevoie de variabila num_letters_seen pentru.
Dacă am fost doar de gând să cripta folosind această metodă, care nu sări
simboluri, spații și numere, apoi ne-am ar putea folosi doar variabila i ca ceea ce
să indice în fraza nostru cheie cu.
Avem nevoie de a utiliza num_letters_seen pentru a păstra cale de actualul loc în
fraza cheie pe care ne-o dorim pentru a indexa.
Deci, aici, în cazul în care cuvântul cheie avem, în cazul în care num_letter_seen keyword_length mod, așa
de ce avem nevoie să mod de lungime de cuvinte cheie?
>> Ei bine, salut lume a fost un exemplu bun.
În cazul în care cuvântul cheie a fost ABC, atunci avem nevoie de pentru a cripta continuu de către o atunci b
atunci c, apoi înfășurați în jurul valorii de spate, a, b, c, a, b, c.
Deci, avem nevoie să mod de lungime cuvinte cheie în scopul de a încheia înapoi în jurul.
>> Deci, în cazul în care acest lucru este o literă mare, apoi ne-o dorim pentru a cripta de către
Poziția de această scrisoare în alfabetul, pe care le obține doar prin
scăzând din capitalul A. Și în mod similar, pentru litere mici, ne-am
poate obține cheia care ne-o dorim de scăzând în litere mici o.
Deci, indiferent dacă litera în fraza cheie a fost un capital sau
literă mică, vom cripta cu aceeași sumă.
>> Acum, că avem cheia noastră, vom vedea aici, că, dacă un mesaj i este o literă mare
caracter, apoi ne-o dorim pentru a calcula poziție în alfabetul de care
caracter, se adaugă cheia noastră să-l, înveliți înapoi în jurul astfel încât, dacă ne-am depășit pe o
z ne întoarcem la a, b, c, și așa mai departe.
Apoi, în cele din urmă, se adaugă din nou pe de capital A. Deci, trecem înapoi în [? Ascii?]
Gama de aceste caractere în loc de poziția numerică în alfabetul
dintre aceste personaje.
>> Și noi facem același lucru pentru caractere minuscule.
Cu excepția vrem să scădem în litere mici o și adăugați-o înapoi pe în
end, litere mici o.
Observați că num_letter_seen este doar crește dacă mesajul am fost
alfabetică.
Acesta este modul în care ne-am sări spații, simboluri, și numerele din fraza nostru cheie, deoarece
num_letter_seen este ceea ce suntem cu ajutorul să indice în cuvinte cheie nostru.
>> În cele din urmă, în cele din urmă, acum că mesajul i au fost criptate, am
imprima i un mesaj.
Și asta e tot.
Numele meu este Rob.
Și acest lucru este Vigenere.
>> [Redare a muzicii]