1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Živjo, jaz sem Rob in kaj je razvozlati Program Vigenere. 3 00:00:16,980 --> 00:00:21,180 Torej prva stvar, ki jo morate storiti, je, da Prepričajte uporabnik vnese kar smo pričakovali 4 00:00:21,180 --> 00:00:23,240 jim v ukazni vrstici. 5 00:00:23,240 --> 00:00:28,720 Torej, če argc ni 2, ki pomeni bodisi Uporabnik ni vnesla godalni 6 00:00:28,720 --> 00:00:31,780 želite, da se uporabi kot naš šifriranje niz, ali pa 7 00:00:31,780 --> 00:00:32,890 začel preveč stvari. 8 00:00:32,890 --> 00:00:35,130 In ne vemo, kaj naj naredim s tistimi drugimi stvarmi. 9 00:00:35,130 --> 00:00:37,960 >> Tako smo jim povedali, kaj jim bi morala biti vpisana. 10 00:00:37,960 --> 00:00:39,300 In se bomo vrnili. 11 00:00:39,300 --> 00:00:44,570 Zdaj, ob predpostavki, da je bil argc 2, smo lahko nadaljuje s preostalim programa. 12 00:00:44,570 --> 00:00:47,890 >> Mi Alias ​​ime argv [1] 13 00:00:47,890 --> 00:00:49,750 v spremenljivo ključno besedo. 14 00:00:49,750 --> 00:00:51,860 Tako da ne bi bilo treba uporabljali ime argv [1] 15 00:00:51,860 --> 00:00:53,050 v preostali del programa. 16 00:00:53,050 --> 00:00:55,570 In morda bomo pozabili, kaj to pomeni, in tako naprej. 17 00:00:55,570 --> 00:00:57,830 Ključna beseda je veliko lepše ime. 18 00:00:57,830 --> 00:01:01,982 In bomo takoj zgrabi dolžino naše ključne besede tukaj. 19 00:01:01,982 --> 00:01:07,460 >> OK, zdaj smo želeli preveriti, da Naša ključna beseda je dejansko veljavna. 20 00:01:07,460 --> 00:01:11,250 Ključne besede, ki jih uporabljamo za šifriranje strune bi morala biti samo po abecedi 21 00:01:11,250 --> 00:01:12,400 znake. 22 00:01:12,400 --> 00:01:16,830 Če uporabnik vnese non-po abecednem redu znaki, bi morali reči, ključne besede, 23 00:01:16,830 --> 00:01:20,170 mora vsebovati le skoznjo Z in se nato vrne. 24 00:01:20,170 --> 00:01:24,370 Torej ta zanka se ponovi čez vse znaki naše ključno besedo, preverjanje 25 00:01:24,370 --> 00:01:31,870 da če ena ni abecedni potem moramo natisniti to opozorilo. 26 00:01:31,870 --> 00:01:36,285 >> Zdaj, ko smo prišli do te točke, vemo, da mora biti pravilno niz. 27 00:01:36,285 --> 00:01:38,230 Ključna beseda mora biti pravilna. 28 00:01:38,230 --> 00:01:40,880 In zdaj moramo dobiti sporočilo od uporabnik, ki nas želijo 29 00:01:40,880 --> 00:01:43,910 šifriranje s tem ključne besede. 30 00:01:43,910 --> 00:01:46,780 Torej, da bi dobili to sporočilo, ki smo jih storiti, medtem ko zanke, da se dogaja, da 31 00:01:46,780 --> 00:01:52,650 neprekinjeno dobili niz od uporabnika dokler ne vnesete veljaven niz. 32 00:01:52,650 --> 00:01:58,690 >> Nadaljevanje vidimo tukaj, to spremenljivko, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Bomo videli, zakaj potrebujemo da v sekundi. 34 00:02:01,300 --> 00:02:07,320 Ampak to zanko se bo Ponovil od i je enak 0, vse tja do i 35 00:02:07,320 --> 00:02:10,940 enaka n, kar pomeni, da smo ponavljanjem čez vse mogoče 36 00:02:10,940 --> 00:02:13,020 znaki v našem sporočilu. 37 00:02:13,020 --> 00:02:17,370 Ker želimo šifrirati vse liki v našem sporočilu. 38 00:02:17,370 --> 00:02:22,970 Torej opazili smo storili, če (isalphamessage [I] ker ne želimo šifrirati 39 00:02:22,970 --> 00:02:25,660 Znaki, ki niso po abecedi. 40 00:02:25,660 --> 00:02:28,810 Če obstajajo znaki, prostori, ali številke, ne bomo 41 00:02:28,810 --> 00:02:30,730 želite šifrirati teh. 42 00:02:30,730 --> 00:02:37,220 >> Zdaj, ob predpostavki, da je po abecednem redu, smo najprej želeli ugotoviti, kaj smo 43 00:02:37,220 --> 00:02:40,890 dejansko želite šifrirati Sporočilo uporabo. 44 00:02:40,890 --> 00:02:42,710 Torej, kaj sem mislil s tem? 45 00:02:42,710 --> 00:02:46,740 >> Denimo, da ključni stavek uporabnik vnese bil abc. 46 00:02:46,740 --> 00:02:49,070 To je tisto, kar smo s pomočjo za šifriranje. 47 00:02:49,070 --> 00:02:54,850 Zdaj, naivno menimo, da pomeni, da želimo šifrirati prvi znak 48 00:02:54,850 --> 00:02:59,740 našega sporočila za 0, saj sredstvo vrtenje značaj z 0. 49 00:02:59,740 --> 00:03:04,395 >> Želimo, da za šifriranje drugi znak z 1, tretji znak za 2, 50 00:03:04,395 --> 00:03:09,170 Četrti znak za 0, peta z 1, šesta z 2, in tako naprej. 51 00:03:09,170 --> 00:03:14,440 Vendar ne pozabite, da želimo preskočiti prostori in simboli in številke. 52 00:03:14,440 --> 00:03:21,520 To pomeni, da če je uporabnik vnesel Zdravo svet kot sporočilo 53 00:03:21,520 --> 00:03:26,590 da želijo šifriranje, potem želimo šifriranje h z 0 54 00:03:26,590 --> 00:03:32,680 ustreza a, e za 1, l z 2, l z 0, o z 1. 55 00:03:32,680 --> 00:03:41,050 Želimo, da bi preskočili prostor, šifrirani w, 2, o z 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Torej opazil, če ne bi preskočila prostor, potem bi bili šifrirani 57 00:03:45,250 --> 00:03:51,240 w z 0 in končal s nepravilen niz. 58 00:03:51,240 --> 00:03:57,470 >> OK, to je tisto, kar potrebujemo spremenljivko num_letters_seen za. 59 00:03:57,470 --> 00:04:04,450 Če smo le, da bo šifriranje s pomočjo Ta metoda, ki ne preskoči 60 00:04:04,450 --> 00:04:09,860 simboli, presledki in številke, nato pa smo lahko pa uporabite spremenljivko i, kot tisto, 61 00:04:09,860 --> 00:04:12,540 indeks v naše ključne besede s. 62 00:04:12,540 --> 00:04:17,620 Moramo uporabiti num_letters_seen da skladbo na dejanski kraj v 63 00:04:17,620 --> 00:04:21,146 ključni stavek, ki ga želimo indeks. 64 00:04:21,146 --> 00:04:32,240 Torej tukaj, če ključno besedo imamo, če num_letter_seen mod keyword_length, tako 65 00:04:32,240 --> 00:04:34,570 Zakaj moramo mod po dolžini ključnih besed? 66 00:04:34,570 --> 00:04:36,630 >> Pozdravljen svet je dober primer. 67 00:04:36,630 --> 00:04:42,310 Če je ključna beseda abc, potem moramo nenehno šifriranje, ki ga nato b 68 00:04:42,310 --> 00:04:45,740 nato c, nato zaviti nazaj okoli, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Zato moramo mod po dolžini ključnih besed da se ovije okoli nazaj. 70 00:04:50,110 --> 00:04:57,280 >> Torej, če je to veliko črko, potem želimo šifriranje, ki ga 71 00:04:57,280 --> 00:05:01,450 Položaj tega dopisa v abecede, ki smo jih dobili s samo 72 00:05:01,450 --> 00:05:06,730 odšteje od kapitala A. In podobno, za male črke, smo 73 00:05:06,730 --> 00:05:13,000 Lahko dobite ključ, da želimo s odšteje od male črke a. 74 00:05:13,000 --> 00:05:16,910 Torej, ne glede na to, ali črka V ključnih stavek je bil kapital ali 75 00:05:16,910 --> 00:05:21,640 male črke, da bomo šifriranje za enak znesek. 76 00:05:21,640 --> 00:05:28,680 >> Zdaj, ko imamo ključ, vidimo tukaj, da če je sporočilo, i je z velikimi črkami 77 00:05:28,680 --> 00:05:32,660 lik, nato pa želimo izračunati Položaj v abeceda, ki 78 00:05:32,660 --> 00:05:39,460 lik, dodajte naš ključ do tega, zaviti nazaj okoli, tako da če bi šla mimo 79 00:05:39,460 --> 00:05:43,170 Z vrnemo na A, B, C, in tako naprej. 80 00:05:43,170 --> 00:05:49,070 Potem, na koncu dodamo nazaj na kapitalski A. Torej, prehajamo nazaj v [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 Obseg teh znakov namesto številčna položaj v abecedi 82 00:05:52,010 --> 00:05:53,540 teh znakov. 83 00:05:53,540 --> 00:05:56,610 >> In delamo isto stvar za male črke. 84 00:05:56,610 --> 00:06:00,070 Razen želimo, da odštejemo od male črke in ga dodate nazaj v 85 00:06:00,070 --> 00:06:02,900 end, male črke. 86 00:06:02,900 --> 00:06:08,120 Opazimo, da num_letter_seen le povečajo, če sporočilo sem bil 87 00:06:08,120 --> 00:06:09,640 po abecednem redu. 88 00:06:09,640 --> 00:06:15,790 To je, kako bomo preskočili prostore, simboli in Številke v naši ključne besede, saj 89 00:06:15,790 --> 00:06:20,520 num_letter_seen je tisto, kar smo s pomočjo indeks v našo ključno besedo. 90 00:06:20,520 --> 00:06:24,540 >> Končno, na koncu, zdaj ko sporočilo i je bila šifrirana, smo 91 00:06:24,540 --> 00:06:26,280 izpisal sporočilo i. 92 00:06:26,280 --> 00:06:27,890 In to je to. 93 00:06:27,890 --> 00:06:28,670 Moje ime je Rob. 94 00:06:28,670 --> 00:06:31,020 In to je Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Predvaja glasba] 96 00:06:32,850 --> 00:06:36,651