1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> Rob: Hi, Ako Rob, at ng maintindihan ipaalam ang programa Vigenere. 3 00:00:16,980 --> 00:00:21,180 Kaya unang bagay na kailangan naming gawin ay gumawa Tiyaking gumagamit ang nagpasok ng kung ano ang aming inaasahan 4 00:00:21,180 --> 00:00:23,240 sa kanila na sa linya Command. 5 00:00:23,240 --> 00:00:28,720 Kaya kung argc ay hindi 2 na nangangahulugan alinman sa ang gumagamit ay hindi ipasok ang string namin 6 00:00:28,720 --> 00:00:31,780 gustong mai-paggamit ng aming encrypt string, o sila 7 00:00:31,780 --> 00:00:32,890 ipinasok masyadong maraming mga bagay. 8 00:00:32,890 --> 00:00:35,130 At hindi namin alam kung ano ang gagawin may mga iba pang mga bagay. 9 00:00:35,130 --> 00:00:37,960 >> Kaya sabihin namin sa kanila kung ano ang kanilang Dapat ay ipinasok. 10 00:00:37,960 --> 00:00:39,300 At bumalik namin. 11 00:00:39,300 --> 00:00:44,570 Ngayon, ipagpalagay na argc ay 2, kaya namin magpatuloy sa natitirang bahagi ng programa. 12 00:00:44,570 --> 00:00:47,890 >> Alias ​​namin ang pangalan ng argv [1] 13 00:00:47,890 --> 00:00:49,750 papunta sa variable keyword. 14 00:00:49,750 --> 00:00:51,860 Kaya na hindi namin kailangang mag- gamitin ang pangalan argv [1] 15 00:00:51,860 --> 00:00:53,050 sa buong natitirang bahagi ng programa. 16 00:00:53,050 --> 00:00:55,570 At siguro ay gagamitin namin kalimutan kung ano Nangangahulugan na at iba pa. 17 00:00:55,570 --> 00:00:57,830 Keyword ay isang magkano nicer pangalan. 18 00:00:57,830 --> 00:01:01,982 At kami kaagad grab ang haba sa aming mga keyword dito mismo. 19 00:01:01,982 --> 00:01:07,460 >> OK, kaya ngayon ay nais namin na suriin na ang ang aming mga keyword ay talagang wasto. 20 00:01:07,460 --> 00:01:11,250 Ang keyword na ginagamit namin upang i-encrypt ang mga string Dapat na alphabetical lamang 21 00:01:11,250 --> 00:01:12,400 character. 22 00:01:12,400 --> 00:01:16,830 Kung ipinasok ng gumagamit ang di-alpabetikong mga character, dapat naming sabihin, keyword 23 00:01:16,830 --> 00:01:20,170 Dapat lamang maglaman ng sa pamamagitan ng Z at pagkatapos ay bumalik. 24 00:01:20,170 --> 00:01:24,370 Kaya ito para sa loop iterates sa ibabaw ng lahat mga character ng aming keyword, pagsuri 25 00:01:24,370 --> 00:01:31,870 na kung ang isa ay hindi alphabetical pagkatapos kailangan naming i-print ang babalang iyon. 26 00:01:31,870 --> 00:01:36,285 >> Ngayon, sa sandaling makuha namin sa puntong ito, alam namin na ang string ay dapat na tama. 27 00:01:36,285 --> 00:01:38,230 Dapat na tama Ang keyword. 28 00:01:38,230 --> 00:01:40,880 At ngayon kailangan namin upang makuha ang mensahe mula sa ang gumagamit na nila gusto sa amin upang 29 00:01:40,880 --> 00:01:43,910 i-encrypt na may na key parirala. 30 00:01:43,910 --> 00:01:46,780 Kaya upang makakuha ng mensaheng iyon, mayroon kaming isang gawin habang loop na pupuntahan 31 00:01:46,780 --> 00:01:52,650 patuloy na makakuha ng isang string mula sa gumagamit na ang hanggang sa magpasok sila ng wastong string. 32 00:01:52,650 --> 00:01:58,690 >> Ang pagpapatuloy, makikita natin dito ang variable, int nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 Susubukan naming makita kung bakit kailangan namin na sa isang segundo. 34 00:02:01,300 --> 00:02:07,320 Ngunit ito para sa loop ay pagpunta upang umulit mula katumbas i 0 ang lahat ng mga paraan ng hanggang sa i 35 00:02:07,320 --> 00:02:10,940 ay katumbas ng n, na nangangahulugang kami iterating sa paglipas ng lahat ng mga posibleng 36 00:02:10,940 --> 00:02:13,020 character sa aming mensahe. 37 00:02:13,020 --> 00:02:17,370 Dahil nais namin upang i-encrypt ang lahat ng ang mga character sa aming mensahe. 38 00:02:17,370 --> 00:02:22,970 Kaya mapansin ang ginagawa namin kung (isalphamessage [ko], dahil hindi namin nais na i-encrypt 39 00:02:22,970 --> 00:02:25,660 mga character na hindi alphabetical. 40 00:02:25,660 --> 00:02:28,810 Kung mayroong mga simbolo, puwang, o mga numero, hindi namin 41 00:02:28,810 --> 00:02:30,730 gusto upang i-encrypt ang mga iyon. 42 00:02:30,730 --> 00:02:37,220 >> Ngayon, sa pag-aakala na ito ay alphabetical, kami gusto munang malaman kung ano ang aming 43 00:02:37,220 --> 00:02:40,890 talagang gusto upang i-encrypt ang mensahe gamit. 44 00:02:40,890 --> 00:02:42,710 Kaya ano ang gagawin ko ibig sabihin sa pamamagitan ng na? 45 00:02:42,710 --> 00:02:46,740 >> Ipagpalagay nating Hayaan na ang susi parirala ang gumagamit ay ipinasok abc. 46 00:02:46,740 --> 00:02:49,070 Iyon ay kung ano ang aming ginagamit upang i-encrypt. 47 00:02:49,070 --> 00:02:54,850 Ngayon, naively, sa tingin namin ay nangangahulugan na na gusto naming upang i-encrypt ang unang character 48 00:02:54,850 --> 00:02:59,740 ng aming mga mensahe sa pamamagitan ng 0, dahil ang isang paraan umiikot na mga karakter sa pamamagitan ng 0. 49 00:02:59,740 --> 00:03:04,395 >> Gusto naming upang i-encrypt ang pangalawang ng character sa pamamagitan ng 1, ikatlong ng character sa pamamagitan ng 2, 50 00:03:04,395 --> 00:03:09,170 ang ika-apat na character sa pamamagitan ng 0, ang ikalimang sa pamamagitan ng 1, ang ikaanim sa pamamagitan ng 2, at iba pa. 51 00:03:09,170 --> 00:03:14,440 Ngunit tandaan, na gusto naming laktawan mga puwang at mga simbolo at numero. 52 00:03:14,440 --> 00:03:21,520 Nangangahulugan ito na sa kung ipinasok ng gumagamit ang kumusta mundo bilang mensahe 53 00:03:21,520 --> 00:03:26,590 na gusto nilang i-encrypt, pagkatapos ay gusto naming upang i-encrypt ang h sa pamamagitan ng 0 54 00:03:26,590 --> 00:03:32,680 naaayon sa a, ang e ng 1, ang l sa pamamagitan ng 2, ang l sa pamamagitan ng 0, ang o sa pamamagitan ng 1. 55 00:03:32,680 --> 00:03:41,050 Gusto naming laktawan ang puwang, naka-encrypt na ang w sa pamamagitan ng 2, ang o sa pamamagitan ng 0, 1, 2, 0. 56 00:03:41,050 --> 00:03:45,250 Kaya't mapapansin, kung hindi kami ay nilaktawan ang espasyo, pagkatapos sana ay naka-encrypt namin 57 00:03:45,250 --> 00:03:51,240 ang w sa pamamagitan ng 0 at natapos up gamit ang hindi tamang string. 58 00:03:51,240 --> 00:03:57,470 >> OK, ito ay kung ano ang kailangan namin ang variable num_letters_seen para sa. 59 00:03:57,470 --> 00:04:04,450 Kung tayo ay lamang pagpunta upang i-encrypt gamit ang ang pamamaraan na ito, na hindi laktawan 60 00:04:04,450 --> 00:04:09,860 mga simbolo, puwang, at mga numero, pagkatapos namin maaari lamang gamitin ang mga variable na i bilang kung ano 61 00:04:09,860 --> 00:04:12,540 i-index sa aming mga key parirala na may. 62 00:04:12,540 --> 00:04:17,620 Kailangan naming gamitin num_letters_seen upang panatilihing subaybayan ang aktwal na lugar sa 63 00:04:17,620 --> 00:04:21,146 susi parirala na nais naming i-index. 64 00:04:21,146 --> 00:04:32,240 Kaya dito, kung ang keyword mayroon kami, kung num_letter_seen mod keyword_length, kaya 65 00:04:32,240 --> 00:04:34,570 bakit kailangan naming i-mod sa pamamagitan ng haba ng keyword? 66 00:04:34,570 --> 00:04:36,630 >> Well, kumusta mundo noon ay isang magandang halimbawa. 67 00:04:36,630 --> 00:04:42,310 Kung ang keyword ay abc, pagkatapos kailangan namin upang patuloy na i-encrypt sa pamamagitan ng isang pagkatapos ay b 68 00:04:42,310 --> 00:04:45,740 pagkatapos c, pagkatapos ay i-wrap pabalik sa paligid, a, b, c, a, b, c. 69 00:04:45,740 --> 00:04:50,110 Kaya kailangan naming i-mod sa pamamagitan ng haba ng keyword upang balutin pabalik sa paligid. 70 00:04:50,110 --> 00:04:57,280 >> Kaya kung ito ay isang uppercase na titik, pagkatapos ay nais naming upang i-encrypt sa pamamagitan ng 71 00:04:57,280 --> 00:05:01,450 posisyon ng na titik sa alpabeto, na makuha namin sa pamamagitan lamang 72 00:05:01,450 --> 00:05:06,730 pagbabawas out kabisera A. At katulad, para sa maliliit na mga titik, namin 73 00:05:06,730 --> 00:05:13,000 Maaari makuha ang key na gusto namin sa pamamagitan ng pagbabawas out lowercase isang. 74 00:05:13,000 --> 00:05:16,910 Kaya hindi alintana kung ang titik sa ang susi parirala ay may malaking titik o 75 00:05:16,910 --> 00:05:21,640 lowercase na titik, kami ay pagpunta sa i-encrypt sa pamamagitan ng sa parehong halaga. 76 00:05:21,640 --> 00:05:28,680 >> Ngayon na mayroon kami sa aming mga key, makikita natin dito, na kung mensaheng i ay isang uppercase 77 00:05:28,680 --> 00:05:32,660 karakter, pagkatapos ay nais naming kalkulahin ang posisyon sa alpabeto ng na 78 00:05:32,660 --> 00:05:39,460 karakter, magdagdag ng aming mga susi sa ito, balutin pabalik sa paligid upang kung nagpunta kami nakalipas na isang 79 00:05:39,460 --> 00:05:43,170 z pumunta namin pabalik sa a, b, c, at iba pa. 80 00:05:43,170 --> 00:05:49,070 Pagkatapos, sa wakas, idagdag pabalik sa kabisera A. Kaya shift namin pabalik sa [? Ascii?] 81 00:05:49,070 --> 00:05:52,010 sa halip ng iba't-ibang mga character na ito ang numeric posisyon sa alpabeto 82 00:05:52,010 --> 00:05:53,540 ng mga character na ito. 83 00:05:53,540 --> 00:05:56,610 >> At gawin namin ang parehong bagay para sa lower case na mga character. 84 00:05:56,610 --> 00:06:00,070 Maliban gusto naming ibawas out lowercase isang at idagdag ito muli ang 85 00:06:00,070 --> 00:06:02,900 pagtatapos, lowercase isang. 86 00:06:02,900 --> 00:06:08,120 Pansinin na num_letter_seen ay lamang incremented kung mensaheng i noon ay 87 00:06:08,120 --> 00:06:09,640 alphabetical. 88 00:06:09,640 --> 00:06:15,790 Ito ay kung paano namin laktawan ang mga puwang, mga simbolo, at mga numero sa aming mga key parirala, dahil 89 00:06:15,790 --> 00:06:20,520 num_letter_seen ay kung ano ang aming ginagamit i-index sa aming mga keyword. 90 00:06:20,520 --> 00:06:24,540 >> Sa wakas, sa dulo, ngayon mensahe na i ay naka-encrypt, namin 91 00:06:24,540 --> 00:06:26,280 i-print ang mensaheng ito i. 92 00:06:26,280 --> 00:06:27,890 At na ito. 93 00:06:27,890 --> 00:06:28,670 Ang pangalan ko ay Rob. 94 00:06:28,670 --> 00:06:31,020 At ito ay Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [MUSIC nagpe-play] 96 00:06:32,850 --> 00:06:36,651