1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: Sveiki, es esmu Rob, un pieņemsim atšifrēt Vigenere programmu. 3 00:00:16,980 --> 00:00:21,180 Tātad pirmā lieta, kas mums jādara, ir padarīt Noteikti lietotājs ievada, ko mēs gaidīts 4 00:00:21,180 --> 00:00:23,240 viņiem pie komandrindas. 5 00:00:23,240 --> 00:00:28,720 Tātad, ja argc nav 2 tas nozīmē, ka vai nu lietotājs nav ievadiet stīgu mēs 6 00:00:28,720 --> 00:00:31,780 vēlas, lai, izmantojot kā mūsu šifrēšanas virkne, vai arī tie 7 00:00:31,780 --> 00:00:32,890 ievadīts pārāk daudz lietas. 8 00:00:32,890 --> 00:00:35,130 Un mēs nezinām, ko darīt ar šīm citām lietām. 9 00:00:35,130 --> 00:00:37,960 >> Tāpēc mēs viņiem pateikt, ko viņi būtu iekļauta. 10 00:00:37,960 --> 00:00:39,300 Un mēs atgriežamies. 11 00:00:39,300 --> 00:00:44,570 Tagad, pieņemot, ka argc bija 2, mēs varam turpināt ar pārējo programmas. 12 00:00:44,570 --> 00:00:47,890 >> Mēs Alias ​​nosaukumu ARGV [1] 13 00:00:47,890 --> 00:00:49,750 uz mainīgo atslēgvārdu. 14 00:00:49,750 --> 00:00:51,860 Tāpēc, ka mums nav izmantot nosaukumu ARGV [1] 15 00:00:51,860 --> 00:00:53,050 visu pārējo programmu. 16 00:00:53,050 --> 00:00:55,570 Un varbūt mēs aizmirst to, kas , kas nozīmē, un tā tālāk. 17 00:00:55,570 --> 00:00:57,830 Atslēgvārds ir daudz jaukāk nosaukumu. 18 00:00:57,830 --> 00:01:01,982 Un mēs uzreiz paķert garumu Mūsu atslēgvārdu šeit. 19 00:01:01,982 --> 00:01:07,460 >> Labi, tāpēc tagad mēs vēlamies, lai pārliecinātos, ka Mūsu atslēgvārds ir faktiski derīga. 20 00:01:07,460 --> 00:01:11,250 Atslēgvārds mēs izmantojam, lai šifrētu stīgas ir vienkārši alfabēta 21 00:01:11,250 --> 00:01:12,400 rakstzīmes. 22 00:01:12,400 --> 00:01:16,830 Ja lietotājs ievada bez alfabēta rakstzīmes, mums vajadzētu teikt, atslēgvārds 23 00:01:16,830 --> 00:01:20,170 jāiekļauj tikai A through Z un pēc tam atgriezties. 24 00:01:20,170 --> 00:01:24,370 Tāpēc šis cilpa vairākkārt uzsvērts visā rakstzīmes mūsu atslēgvārdu, pārbaudot 25 00:01:24,370 --> 00:01:31,870 ka, ja viens nav alfabētiskā tad mums ir nepieciešams izdrukāt šo brīdinājumu. 26 00:01:31,870 --> 00:01:36,285 >> Tagad, kad mēs uz šo jautājumu, mēs zinām, ka virkne ir pareizs. 27 00:01:36,285 --> 00:01:38,230 Atslēgvārds ir pareizs. 28 00:01:38,230 --> 00:01:40,880 Un tagad mums ir nepieciešams, lai saņemtu ziņu no lietotājs, ka viņi vēlas, lai mēs 29 00:01:40,880 --> 00:01:43,910 šifrēt ar šo atslēgu frāze. 30 00:01:43,910 --> 00:01:46,780 Tātad, lai iegūtu šo ziņojumu, mēs esam darīt, kamēr cilpa, kas notiek, lai 31 00:01:46,780 --> 00:01:52,650 nepārtraukti iegūt virkni no lietotāja līdz brīdim, kad tās nonāk derīgu virkni. 32 00:01:52,650 --> 00:01:58,690 >> Turpinot, mēs redzam šeit šo mainīgo, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Mēs redzēsim, kāpēc mums vajag ka otrajā. 34 00:02:01,300 --> 00:02:07,320 Bet tas cilpa gatavojas atkārtot no i vienāds 0 visu ceļu līdz i 35 00:02:07,320 --> 00:02:10,940 vienāds ar n, kas nozīmē, ka mēs esam atkārtojot visas iespējas 36 00:02:10,940 --> 00:02:13,020 rakstzīmes mūsu vēstījumu. 37 00:02:13,020 --> 00:02:17,370 Jo mēs gribam, lai šifrētu visiem varoņi mūsu vēstījumu. 38 00:02:17,370 --> 00:02:22,970 Tāpēc paziņojums mums darīt, ja (isalphamessage [I] jo mēs nevēlamies, lai šifrētu 39 00:02:22,970 --> 00:02:25,660 rakstzīmes, kas nav alfabēta. 40 00:02:25,660 --> 00:02:28,810 Ja ir simboli, atstarpes, vai numurus, mums nav 41 00:02:28,810 --> 00:02:30,730 vēlaties šifrēt tos. 42 00:02:30,730 --> 00:02:37,220 >> Tagad, pieņemot, ka tas ir alfabēta, mēs vispirms vēlamies, lai noskaidrotu, ko mēs 43 00:02:37,220 --> 00:02:40,890 tiešām vēlaties šifrēt ziņu, izmantojot. 44 00:02:40,890 --> 00:02:42,710 Tātad, ko es ar to domāju? 45 00:02:42,710 --> 00:02:46,740 >> Pieņemsim, ka galvenais frāze lietotājs ieraksta bija abc. 46 00:02:46,740 --> 00:02:49,070 Tas ir tas, ko mēs izmantot, lai šifrētu. 47 00:02:49,070 --> 00:02:54,850 Tagad, naivi, mēs domājam, tas nozīmē, ka Mēs vēlamies, lai šifrētu pirmo rakstzīmi 48 00:02:54,850 --> 00:02:59,740 Mūsu ziņu pa 0, jo līdzekļi rotējot raksturs, 0. 49 00:02:59,740 --> 00:03:04,395 >> Mēs vēlamies, lai šifrētu otro rakstzīmi par 1, trešā zīme par 2, 50 00:03:04,395 --> 00:03:09,170 ceturtais raksturs ar 0, piektais līdz 1, sestajā ar 2, un tā tālāk. 51 00:03:09,170 --> 00:03:14,440 Bet atceries, ka mēs vēlamies, lai izlaistu atstarpes un simbolus un ciparus. 52 00:03:14,440 --> 00:03:21,520 Tas nozīmē, ka ja lietotājs ir ievadīta hello world kā ziņas 53 00:03:21,520 --> 00:03:26,590 ka viņi vēlas, lai šifrētu, tad Mēs vēlamies, lai šifrētu h līdz 0 54 00:03:26,590 --> 00:03:32,680 , kas atbilst A, e par 1, l līdz 2, l, 0, o ar 1. 55 00:03:32,680 --> 00:03:41,050 Mēs vēlamies, lai izlaistu telpu, šifrētu w ar 2, o ar 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Tātad paziņojums, ja mēs nebūtu izlaidis telpu, tad mēs būtu šifrēta 57 00:03:45,250 --> 00:03:51,240 w, 0 un beidzās ar nepareiza string. 58 00:03:51,240 --> 00:03:57,470 >> Labi, tas ir tas, kas mums ir vajadzīga mainīgo num_letters_seen par. 59 00:03:57,470 --> 00:04:04,450 Ja mēs tikai gatavojas šifrēt, izmantojot šī metode, kas nav izlaist 60 00:04:04,450 --> 00:04:09,860 simboli, atstarpes un cipari, tad mēs varētu tikai izmantot mainīgo i par to, kas 61 00:04:09,860 --> 00:04:12,540 indeksēt mūsu galveno frāze ar. 62 00:04:12,540 --> 00:04:17,620 Mums ir nepieciešams, lai izmantotu num_letters_seen lai saglabātu dziesmu par faktisko vietu 63 00:04:17,620 --> 00:04:21,146 atslēgu frāze, ka mēs gribam, lai indeksu. 64 00:04:21,146 --> 00:04:32,240 Tātad šeit, ja atslēgvārds mums ir, ja num_letter_seen mod keyword_length, tāpēc 65 00:04:32,240 --> 00:04:34,570 kāpēc mums vajag mod pēc atslēgvārda garumu? 66 00:04:34,570 --> 00:04:36,630 >> Nu, sveiki pasaule bija labs piemērs. 67 00:04:36,630 --> 00:04:42,310 Ja atslēgvārds ir abc, tad mums nepārtraukti šifrētu ko tad b 68 00:04:42,310 --> 00:04:45,740 tad c, tad wrap atpakaļ ap, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Tāpēc mums ir nepieciešams, lai mod pēc atslēgvārda garumu lai wrap atpakaļ apkārt. 70 00:04:50,110 --> 00:04:57,280 >> Tātad, ja tas ir lielais burts, tad mēs gribam, lai šifrētu ar 71 00:04:57,280 --> 00:05:01,450 Minētās vēstules alfabētu amats, kuru mēs, tikai 72 00:05:01,450 --> 00:05:06,730 atņemot no kapitāla A. un Līdzīgi, mazajiem burtiem, mēs 73 00:05:06,730 --> 00:05:13,000 var iegūt atslēgu, ko mēs gribam, ko atņemot no mazajam a. 74 00:05:13,000 --> 00:05:16,910 Tātad, neatkarīgi no tā, vai vēstule ar galveno frāze bija kapitāls vai 75 00:05:16,910 --> 00:05:21,640 mazo burtu, mēs ejam šifrētu ar tādu pašu daudzumu. 76 00:05:21,640 --> 00:05:28,680 >> Tagad, ka mums ir mūsu atslēga, mēs redzam šeit, ka, ja ziņojumu i ir lielais 77 00:05:28,680 --> 00:05:32,660 raksturs, tad mēs vēlamies, lai aprēķinātu pozīciju alfabēts ka 78 00:05:32,660 --> 00:05:39,460 raksturu, pievienot savu atslēgu uz to, ietiniet atpakaļ apmēram tā, ka, ja mēs gājām garām 79 00:05:39,460 --> 00:05:43,170 z mēs doties atpakaļ uz a, b, c, un tā tālāk. 80 00:05:43,170 --> 00:05:49,070 Tad, visbeidzot, pievienojiet atpakaļ uz kapitāla A. So mēs pāriet atpakaļ [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 diapazonā no šiem burtiem, nevis ciparu pozīcijas alfabēta 82 00:05:52,010 --> 00:05:53,540 no šiem burtiem. 83 00:05:53,540 --> 00:05:56,610 >> Un mēs to pašu par mazajiem burtiem. 84 00:05:56,610 --> 00:06:00,070 Izņemot gadījumus, mēs vēlamies, lai atņemtu ārā mazos un pievienojiet to atpakaļ uz 85 00:06:00,070 --> 00:06:02,900 end, mazajiem burtiem. 86 00:06:02,900 --> 00:06:08,120 Ievērojiet, ka num_letter_seen ir tikai palielina, ja ziņa man bija 87 00:06:08,120 --> 00:06:09,640 alfabēta. 88 00:06:09,640 --> 00:06:15,790 Tas ir, kā mēs izlaist atstarpes, simbolus, un numurus mūsu atslēgu frāze, jo 89 00:06:15,790 --> 00:06:20,520 num_letter_seen ir tas, ko mēs izmantojam indeksēt mūsu atslēgvārdu. 90 00:06:20,520 --> 00:06:24,540 >> Visbeidzot, galu galā, tagad šī ziņa i ir šifrēta, mēs 91 00:06:24,540 --> 00:06:26,280 izdrukāt ziņu i. 92 00:06:26,280 --> 00:06:27,890 Un tas arī viss. 93 00:06:27,890 --> 00:06:28,670 Mans vārds ir Rob. 94 00:06:28,670 --> 00:06:31,020 Un tas ir Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [Mūzikas atskaņošanai] 96 00:06:32,850 --> 00:06:36,651