1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> Rob: Hi, unë jam Rob, dhe le të deshifroj programi Vigenere. 3 00:00:16,980 --> 00:00:21,180 Pra, gjëja e parë që ne duhet të bëni është të bëjë siguruar që përdoruesi ka hyrë ajo që ne prisnim 4 00:00:21,180 --> 00:00:23,240 ata që të në rreshtin e komandave. 5 00:00:23,240 --> 00:00:28,720 Pra, nëse nuk është argc 2 që do të thotë ose përdoruesi nuk ka hyrë në string ne 6 00:00:28,720 --> 00:00:31,780 duan të jenë duke e përdorur si encrypting tonë string, ose ata 7 00:00:31,780 --> 00:00:32,890 hyri shumë gjëra. 8 00:00:32,890 --> 00:00:35,130 Dhe ne nuk e dimë se çfarë të bëjë me ato gjëra të tjera. 9 00:00:35,130 --> 00:00:37,960 >> Pra, ne tregoni atyre atë që ata duhet të kishte hyrë. 10 00:00:37,960 --> 00:00:39,300 Dhe ne kthehemi. 11 00:00:39,300 --> 00:00:44,570 Tani, duke supozuar se argc ishte 2, ne mund të të vazhdojë me pjesën tjetër të programit. 12 00:00:44,570 --> 00:00:47,890 >> Ne alias emrin e ARGV [1] 13 00:00:47,890 --> 00:00:49,750 në fjalen ndryshueshme. 14 00:00:49,750 --> 00:00:51,860 Kështu që ne nuk duhet të përdorin emrin ARGV [1] 15 00:00:51,860 --> 00:00:53,050 përgjatë pjesës tjetër të programit. 16 00:00:53,050 --> 00:00:55,570 Dhe ndoshta ne do të harrojmë atë që që do të thotë dhe kështu me radhë. 17 00:00:55,570 --> 00:00:57,830 Keyword është një emër shumë nicer. 18 00:00:57,830 --> 00:01:01,982 Dhe ne do të menjëherë kap gjatësinë nga keyword tonë të drejtë këtu. 19 00:01:01,982 --> 00:01:07,460 >> OK, kështu që tani që ne duam të kontrolloni se fjalen ynë është në të vërtetë e vlefshme. 20 00:01:07,460 --> 00:01:11,250 Fjalen ne përdorim për të encrypt vargjet duhet vetëm të jetë i alfabetik 21 00:01:11,250 --> 00:01:12,400 karaktere. 22 00:01:12,400 --> 00:01:16,830 Në qoftë se përdoruesi ka hyrë jo-alfabetik karaktere, ne duhet të themi, keyword 23 00:01:16,830 --> 00:01:20,170 duhet të përmbajë vetëm një pasim Z dhe pastaj të kthehen. 24 00:01:20,170 --> 00:01:24,370 Pra, kjo për iterates lak mbi të gjitha karaktere të fjalen sonë, duke kontrolluar 25 00:01:24,370 --> 00:01:31,870 se nëse dikush nuk është i alfabetik atëherë ne kemi nevojë për të shtypur atë paralajmërim. 26 00:01:31,870 --> 00:01:36,285 >> Tani, sapo të marrë në këtë pikë, ne e dimë se vargu duhet të jetë e saktë. 27 00:01:36,285 --> 00:01:38,230 Fjalë kyçe duhet të jetë e saktë. 28 00:01:38,230 --> 00:01:40,880 Dhe tani ne kemi nevojë për të marrë mesazhin nga përdoruesit që ata të na duan të 29 00:01:40,880 --> 00:01:43,910 encrypt me atë frazë kyçe. 30 00:01:43,910 --> 00:01:46,780 Pra, për të marrë atë mesazh, ne kemi një bëni ndërsa lak që do të 31 00:01:46,780 --> 00:01:52,650 vazhdimisht të marrë një varg nga përdoruesit deri sa të hyjnë në një varg të vlefshme. 32 00:01:52,650 --> 00:01:58,690 >> Duke vazhduar, ne shohim këtu këtë variabël, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Ne do të shohim se pse ne kemi nevojë që në një të dytë. 34 00:02:01,300 --> 00:02:07,320 Por kjo për lak do të iterate nga i barabartë me 0, gjatë gjithë rrugës deri të i 35 00:02:07,320 --> 00:02:10,940 është e barabartë me n, që do të thotë ne jemi iterating mbi të gjitha të jetë e mundur 36 00:02:10,940 --> 00:02:13,020 karaktere në mesazhin tonë. 37 00:02:13,020 --> 00:02:17,370 Sepse ne duam të encrypt të gjitha të personazhet në mesazhin tonë. 38 00:02:17,370 --> 00:02:22,970 Pra, vini re ne qoftë se (isalphamessage [I], sepse ne nuk duam të encrypt 39 00:02:22,970 --> 00:02:25,660 karaktere që nuk janë alfabetik. 40 00:02:25,660 --> 00:02:28,810 Nëse ka simbolet, hapësira, ose numra, ne nuk bëjmë 41 00:02:28,810 --> 00:02:30,730 doni të encrypt ato. 42 00:02:30,730 --> 00:02:37,220 >> Tani, duke supozuar se është e alfabetik, ne duam së pari të kuptoj se çfarë ne 43 00:02:37,220 --> 00:02:40,890 në të vërtetë doni të encrypt mesazhi duke përdorur. 44 00:02:40,890 --> 00:02:42,710 Pra, çfarë do të thotë me këtë? 45 00:02:42,710 --> 00:02:46,740 >> Le të supozojmë se fraza kyçe përdoruesi hyri ishte abc. 46 00:02:46,740 --> 00:02:49,070 Kjo është ajo që ne jemi duke përdorur për të encrypt. 47 00:02:49,070 --> 00:02:54,850 Tani, me naivitet, ne mendojmë se do të thotë se ne duam të encrypt karakterin e parë 48 00:02:54,850 --> 00:02:59,740 e mesazhit tonë me 0, pasi që një mjet rradhës karakterin me 0. 49 00:02:59,740 --> 00:03:04,395 >> Ne duam të encrypt karakterin e dytë nga 1, karakter tretë me 2, 50 00:03:04,395 --> 00:03:09,170 karakteri i katërt me 0, i pesti nga 1, gjashti me 2, etj. 51 00:03:09,170 --> 00:03:14,440 Por mos harroni, se ne duam të kaloni hapësira dhe simbolet dhe numrat. 52 00:03:14,440 --> 00:03:21,520 Kjo do të thotë se në qoftë se përdoruesi ka hyrë hello world si mesazhit 53 00:03:21,520 --> 00:03:26,590 që ata duan për të encrypt, atëherë ne duam të encrypt h me 0 54 00:03:26,590 --> 00:03:32,680 korrespondon A, e me 1, l me 2, l me 0, o me 1. 55 00:03:32,680 --> 00:03:41,050 Ne duam të kaloni hapësirë, Encrypted w me 2, o me 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Pra të vini re, në qoftë se ne nuk e kishte anashkalua hapësirë, atëherë ne do të kemi mbyllur 57 00:03:45,250 --> 00:03:51,240 w me 0 dhe përfundoi me string pasaktë. 58 00:03:51,240 --> 00:03:57,470 >> OK, kjo është ajo që ne kemi nevojë për variablin num_letters_seen për. 59 00:03:57,470 --> 00:04:04,450 Në qoftë se ne ishim vetëm do të encrypt duke përdorur kjo metodë, e cila nuk e kaloni 60 00:04:04,450 --> 00:04:09,860 simbolet, hapësira, dhe numrat, atëherë ne mund të përdorin vetëm të ndryshueshme i si ajo që 61 00:04:09,860 --> 00:04:12,540 të indeksit në fraza tonë kyçe me. 62 00:04:12,540 --> 00:04:17,620 Ne kemi nevojë për të përdorur num_letters_seen për të mbajtur gjurmët e vendit aktual në 63 00:04:17,620 --> 00:04:21,146 Fraza kyç që ne duam të indeksit. 64 00:04:21,146 --> 00:04:32,240 Kështu që këtu, në qoftë se fjalen ne kemi, në qoftë se num_letter_seen keyword_length mod, kështu 65 00:04:32,240 --> 00:04:34,570 pse nuk kemi nevojë për të mod me gjatësi fjalen? 66 00:04:34,570 --> 00:04:36,630 >> E pra, përshëndetje bota ishte një shembull i mirë. 67 00:04:36,630 --> 00:04:42,310 Nëse fjalen ishte abc, atëherë ne kemi nevojë për të encrypt vazhdimisht nga një pastaj b 68 00:04:42,310 --> 00:04:45,740 pastaj c, pastaj të përfundojë përsëri rreth, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Pra, ne duhet të mod me gjatësi fjalen në mënyrë që të përfundojë përsëri rreth. 70 00:04:50,110 --> 00:04:57,280 >> Pra, nëse kjo është një letër uppercase, atëherë ne duam të encrypt duke 71 00:04:57,280 --> 00:05:01,450 Pozita e atë letër në alfabetin, të cilat ne të merrni vetëm me 72 00:05:01,450 --> 00:05:06,730 zbritur nga kapitali A. Dhe në mënyrë të ngjashme, për shkronja Fjala, ne 73 00:05:06,730 --> 00:05:13,000 mund të merrni kyç që ne duam nga zbritur nga vogle një. 74 00:05:13,000 --> 00:05:16,910 Pra, pa marrë parasysh nëse letra në fraza kryesore ishte një kapital ose 75 00:05:16,910 --> 00:05:21,640 me shkronja të vogla, ne do të encrypt nga të njëjtën sasi. 76 00:05:21,640 --> 00:05:28,680 >> Tani që ne kemi çelësin tonë, ne shohim këtu, se në qoftë se mesazhi i është një uppercase 77 00:05:28,680 --> 00:05:32,660 karakter, atëherë ne duam për të llogaritur Pozita në alfabetin e që 78 00:05:32,660 --> 00:05:39,460 karakter, shtoni kyç tonë për të, të përfundojë prapa rreth në mënyrë që në qoftë se ne kemi shkuar kaluar një 79 00:05:39,460 --> 00:05:43,170 z kthehemi në a, b, c, dhe kështu me radhë. 80 00:05:43,170 --> 00:05:49,070 Pastaj, më në fund, shtoni kthyer në kapitale A. Pra, ne ndryshim kthehet në [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 varg nga këto karaktere në vend të Pozicioni numerike në alfabetin 82 00:05:52,010 --> 00:05:53,540 nga këto karaktere. 83 00:05:53,540 --> 00:05:56,610 >> Dhe ne bëjmë të njëjtën gjë për gërma të vogla. 84 00:05:56,610 --> 00:06:00,070 Përveç ne duam të zbres nga të vogla një dhe shtoni atë përsëri në në 85 00:06:00,070 --> 00:06:02,900 fund, me të vogla një. 86 00:06:02,900 --> 00:06:08,120 Vini re se num_letter_seen është vetëm incremented nëse mesazhi i ishte 87 00:06:08,120 --> 00:06:09,640 alfabetik. 88 00:06:09,640 --> 00:06:15,790 Kjo është se si ne të kaloni hapësira, simbolet, dhe numrat në frazën tonë kryesor, që nga viti 89 00:06:15,790 --> 00:06:20,520 num_letter_seen është ajo që ne jemi duke përdorur të indeksit në fjalen tonë. 90 00:06:20,520 --> 00:06:24,540 >> Së fundi, në fund, tani që mesazhi i ka qenë i mbyllur, ne 91 00:06:24,540 --> 00:06:26,280 shtypura nga mesazh i. 92 00:06:26,280 --> 00:06:27,890 Dhe kjo është ajo. 93 00:06:27,890 --> 00:06:28,670 Emri im është Rob. 94 00:06:28,670 --> 00:06:31,020 Dhe kjo është Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIC Playing] 96 00:06:32,850 --> 00:06:36,651