1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Bună, eu sunt Rob, și să descifreze programul Vigenere. 3 00:00:16,980 --> 00:00:21,180 Deci, primul lucru pe care trebuie să faceți este să facă vă că utilizatorul a introdus ceea ce ne-am asteptat 4 00:00:21,180 --> 00:00:23,240 le la linia de comandă. 5 00:00:23,240 --> 00:00:28,720 Deci, dacă argc nu este 2, care înseamnă fie utilizatorul nu a intrat WE șir 6 00:00:28,720 --> 00:00:31,780 Vreau să fie folosind ca criptarea nostru șir, sau ei 7 00:00:31,780 --> 00:00:32,890 a intrat prea multe lucruri. 8 00:00:32,890 --> 00:00:35,130 Și nu știu ce să fac cu aceste alte lucruri. 9 00:00:35,130 --> 00:00:37,960 >> Așa că le spun ceea ce ei ar fi intrat. 10 00:00:37,960 --> 00:00:39,300 Și ne vom întoarce. 11 00:00:39,300 --> 00:00:44,570 Acum, presupunând că argc a fost de 2, putem continua cu restul programului. 12 00:00:44,570 --> 00:00:47,890 >> Noi alias numele de argv [1] 13 00:00:47,890 --> 00:00:49,750 în cuvântul cheie variabilă. 14 00:00:49,750 --> 00:00:51,860 Astfel că nu trebuie să utilizați argv nume [1] 15 00:00:51,860 --> 00:00:53,050 în restul programului. 16 00:00:53,050 --> 00:00:55,570 Și poate vom uita ce asta înseamnă și așa mai departe. 17 00:00:55,570 --> 00:00:57,830 De cuvinte cheie este un nume mult mai frumos. 18 00:00:57,830 --> 00:01:01,982 Și ne vom apuca imediat lungimea de cuvinte cheie noastre aici. 19 00:01:01,982 --> 00:01:07,460 >> OK, așa că acum ne-o dorim pentru a verifica dacă cuvinte cheie nostru este de fapt valabil. 20 00:01:07,460 --> 00:01:11,250 Cuvântul cheie care le folosim pentru a cripta siruri de caractere ar trebui să fie doar alfabetică 21 00:01:11,250 --> 00:01:12,400 caractere. 22 00:01:12,400 --> 00:01:16,830 În cazul în care utilizatorul a introdus non-alfabetică caractere, ar trebui să spunem, de cuvinte cheie 23 00:01:16,830 --> 00:01:20,170 trebuie să conțină numai de la A la Z și apoi să se întoarcă. 24 00:01:20,170 --> 00:01:24,370 Deci, acest lucru pentru reiterează bucla peste tot caractere de cuvinte cheie noastre, verificarea 25 00:01:24,370 --> 00:01:31,870 că în cazul în care unul nu este în ordine alfabetică, atunci avem nevoie pentru a imprima ca avertisment. 26 00:01:31,870 --> 00:01:36,285 >> Acum, odată ce vom ajunge la acest punct, știm că șirul trebuie să fie corecte. 27 00:01:36,285 --> 00:01:38,230 Cuvântul cheie trebuie să fie corecte. 28 00:01:38,230 --> 00:01:40,880 Și acum avem nevoie pentru a obține mesajul de la utilizatorul care ne doresc să 29 00:01:40,880 --> 00:01:43,910 cripta cu fraza cheie. 30 00:01:43,910 --> 00:01:46,780 Deci, pentru a obține acel mesaj, avem un face în timp ce bucla, care se va 31 00:01:46,780 --> 00:01:52,650 obține în mod continuu un șir de utilizator până când intră un șir valid. 32 00:01:52,650 --> 00:01:58,690 >> Continuand, vom vedea aici această variabilă, Int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Vom vedea de ce avem nevoie că într-o secundă. 34 00:02:01,300 --> 00:02:07,320 Dar acest lucru pentru bucla se va repeta de i este egal cu 0 tot drumul până la i 35 00:02:07,320 --> 00:02:10,940 este egal cu n, ceea ce înseamnă că suntem iterarea peste tot posibil 36 00:02:10,940 --> 00:02:13,020 caractere în mesajul nostru. 37 00:02:13,020 --> 00:02:17,370 Pentru că vrem să cripta toate de caracterele din mesajul nostru. 38 00:02:17,370 --> 00:02:22,970 Deci observa facem în cazul în care (isalphamessage [I], pentru că nu vrem să cripta 39 00:02:22,970 --> 00:02:25,660 caractere care nu sunt în ordine alfabetică. 40 00:02:25,660 --> 00:02:28,810 Dacă există simboluri, spații, sau numere, noi nu facem 41 00:02:28,810 --> 00:02:30,730 Vreau să cripta cele. 42 00:02:30,730 --> 00:02:37,220 >> Acum, presupunând că aceasta este în ordine alfabetică, ne-o dorim în primul rând să ne dăm seama ce ne-am 43 00:02:37,220 --> 00:02:40,890 de fapt, doresc să cripta mesajul folosind. 44 00:02:40,890 --> 00:02:42,710 Deci, ce vreau să spun cu asta? 45 00:02:42,710 --> 00:02:46,740 >> Să presupunem că fraza-cheie utilizatorul a introdus a fost abc. 46 00:02:46,740 --> 00:02:49,070 Asta este ceea ce suntem utilizați pentru a cripta. 47 00:02:49,070 --> 00:02:54,850 Acum, în mod naiv, credem că înseamnă că ne-o dorim pentru a cripta primul caracter 48 00:02:54,850 --> 00:02:59,740 mesajului nostru de 0, deoarece un mijloc rotirea caracterul de 0. 49 00:02:59,740 --> 00:03:04,395 >> Vrem să cripta al doilea caracter de 1, al treilea caracter de 2, 50 00:03:04,395 --> 00:03:09,170 patrulea caracter de 0, a cincea de 1, al șaselea de 2, și așa mai departe. 51 00:03:09,170 --> 00:03:14,440 Dar tine minte, pe care ne-o dorim pentru a sări spații și simboluri și numere. 52 00:03:14,440 --> 00:03:21,520 Acest lucru înseamnă că, în cazul în care utilizatorul a intrat Bună ziua lume ca mesajul 53 00:03:21,520 --> 00:03:26,590 că doresc să cripta, apoi ne-o dorim pentru a cripta h de 0 54 00:03:26,590 --> 00:03:32,680 corespunzătoare a, e de 1, l de 2, L de 0, O prin 1. 55 00:03:32,680 --> 00:03:41,050 Vrem să săriți peste spațiul, criptat w de 2, O prin 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Deci observați, dacă nu am fi sărit spațiu, atunci ne-ar fi criptat 57 00:03:45,250 --> 00:03:51,240 w de 0 și sa încheiat cu șir incorect. 58 00:03:51,240 --> 00:03:57,470 >> OK, aceasta este ceea ce avem nevoie de variabila num_letters_seen pentru. 59 00:03:57,470 --> 00:04:04,450 Dacă am fost doar de gând să cripta folosind această metodă, care nu sări 60 00:04:04,450 --> 00:04:09,860 simboluri, spații și numere, apoi ne-am ar putea folosi doar variabila i ca ceea ce 61 00:04:09,860 --> 00:04:12,540 să indice în fraza nostru cheie cu. 62 00:04:12,540 --> 00:04:17,620 Avem nevoie de a utiliza num_letters_seen pentru a păstra cale de actualul loc în 63 00:04:17,620 --> 00:04:21,146 fraza cheie pe care ne-o dorim pentru a indexa. 64 00:04:21,146 --> 00:04:32,240 Deci, aici, în cazul în care cuvântul cheie avem, în cazul în care num_letter_seen keyword_length mod, așa 65 00:04:32,240 --> 00:04:34,570 de ce avem nevoie să mod de lungime de cuvinte cheie? 66 00:04:34,570 --> 00:04:36,630 >> Ei bine, salut lume a fost un exemplu bun. 67 00:04:36,630 --> 00:04:42,310 În cazul în care cuvântul cheie a fost ABC, atunci avem nevoie de pentru a cripta continuu de către o atunci b 68 00:04:42,310 --> 00:04:45,740 atunci c, apoi înfășurați în jurul valorii de spate, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Deci, avem nevoie să mod de lungime cuvinte cheie în scopul de a încheia înapoi în jurul. 70 00:04:50,110 --> 00:04:57,280 >> Deci, în cazul în care acest lucru este o literă mare, apoi ne-o dorim pentru a cripta de către 71 00:04:57,280 --> 00:05:01,450 Poziția de această scrisoare în alfabetul, pe care le obține doar prin 72 00:05:01,450 --> 00:05:06,730 scăzând din capitalul A. Și în mod similar, pentru litere mici, ne-am 73 00:05:06,730 --> 00:05:13,000 poate obține cheia care ne-o dorim de scăzând în litere mici o. 74 00:05:13,000 --> 00:05:16,910 Deci, indiferent dacă litera în fraza cheie a fost un capital sau 75 00:05:16,910 --> 00:05:21,640 literă mică, vom cripta cu aceeași sumă. 76 00:05:21,640 --> 00:05:28,680 >> Acum, că avem cheia noastră, vom vedea aici, că, dacă un mesaj i este o literă mare 77 00:05:28,680 --> 00:05:32,660 caracter, apoi ne-o dorim pentru a calcula poziție în alfabetul de care 78 00:05:32,660 --> 00:05:39,460 caracter, se adaugă cheia noastră să-l, înveliți înapoi în jurul astfel încât, dacă ne-am depășit pe o 79 00:05:39,460 --> 00:05:43,170 z ne întoarcem la a, b, c, și așa mai departe. 80 00:05:43,170 --> 00:05:49,070 Apoi, în cele din urmă, se adaugă din nou pe de capital A. Deci, trecem înapoi în [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 Gama de aceste caractere în loc de poziția numerică în alfabetul 82 00:05:52,010 --> 00:05:53,540 dintre aceste personaje. 83 00:05:53,540 --> 00:05:56,610 >> Și noi facem același lucru pentru caractere minuscule. 84 00:05:56,610 --> 00:06:00,070 Cu excepția vrem să scădem în litere mici o și adăugați-o înapoi pe în 85 00:06:00,070 --> 00:06:02,900 end, litere mici o. 86 00:06:02,900 --> 00:06:08,120 Observați că num_letter_seen este doar crește dacă mesajul am fost 87 00:06:08,120 --> 00:06:09,640 alfabetică. 88 00:06:09,640 --> 00:06:15,790 Acesta este modul în care ne-am sări spații, simboluri, și numerele din fraza nostru cheie, deoarece 89 00:06:15,790 --> 00:06:20,520 num_letter_seen este ceea ce suntem cu ajutorul să indice în cuvinte cheie nostru. 90 00:06:20,520 --> 00:06:24,540 >> În cele din urmă, în cele din urmă, acum că mesajul i au fost criptate, am 91 00:06:24,540 --> 00:06:26,280 imprima i un mesaj. 92 00:06:26,280 --> 00:06:27,890 Și asta e tot. 93 00:06:27,890 --> 00:06:28,670 Numele meu este Rob. 94 00:06:28,670 --> 00:06:31,020 Și acest lucru este Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Redare a muzicii] 96 00:06:32,850 --> 00:06:36,651