1 00:00:00,000 --> 00:00:10,101 >> [Nagpe-play ng musika] 2 00:00:10,101 --> 00:00:12,700 >> ZAMYLA Chan: Sabihin ipatupad Vigenere, isang bahagyang higit pa 3 00:00:12,700 --> 00:00:14,710 secure ang cipher kaysa Caesar. 4 00:00:14,710 --> 00:00:19,670 Ang plain text ay enciphered paggamit isang string sa halip na isang integer. 5 00:00:19,670 --> 00:00:22,970 Ang bawat alpabetikong character in plain text ay Paglipat sa pamamagitan ng isang 6 00:00:22,970 --> 00:00:24,450 sulat sa keyword. 7 00:00:24,450 --> 00:00:30,860 >> Sa halimbawang ito, ang keyword ohai, Oh tumutugon sa isang shift ng 14; H sa isang 8 00:00:30,860 --> 00:00:36,910 shift ng 7; A, shift ng 0; at ako ay isang shift ng 8. 9 00:00:36,910 --> 00:00:40,710 Kung matagumpay mong naipatupad ang iyong Caesar cipher, makikita ito maging isang magaling 10 00:00:40,710 --> 00:00:43,510 framework mula sa kung saan mo maaaring ipatupad Vigenere. 11 00:00:43,510 --> 00:00:47,140 Tulad ng iyong nakikita, ang pagpapatakbo ng isang Vigenere cipher na may isang solong character bilang isang 12 00:00:47,140 --> 00:00:51,830 keyword ay ang parehong bagay bilang isang Caesar cipher. 13 00:00:51,830 --> 00:00:55,170 >> Ang parehong mga hakbang upang ilapat Vigenere bilang ang kanilang ginawa sa Caesar. 14 00:00:55,170 --> 00:01:01,240 Ang keyword ay ang pangalawang command line argumento, kaya mo itong ma-access sa argv1. 15 00:01:01,240 --> 00:01:05,400 Pagkatapos ay kailangan mong i-verify na ang susi salita talaga ang lahat alphabetical. 16 00:01:05,400 --> 00:01:09,040 Dito ay kung saan ay alpha Maaaring makita sa madaling-gamiting. 17 00:01:09,040 --> 00:01:13,550 Kung mayroon kang isang wastong keyword, makakakuha ka ng lakas mula sa gumagamit, at pagkatapos ay 18 00:01:13,550 --> 00:01:15,820 handa ka na upang ensayper. 19 00:01:15,820 --> 00:01:20,840 >> Ang formula Vigenere cipher ay katulad sa Caesar formula, maliban ngayon k 20 00:01:20,840 --> 00:01:27,650 nagiging k subscript j, na nagpapahiwatig j ang ika-sulat ng keyword. 21 00:01:27,650 --> 00:01:29,640 Sabihin hakbang sa pamamagitan ng prosesong ito. 22 00:01:29,640 --> 00:01:34,060 Sabihin nating nais mong magpadala ng mensahe sa iyong pag-crash, gusto ko sa iyo, ngunit hindi mo pag 23 00:01:34,060 --> 00:01:35,190 gusto lahat malaman. 24 00:01:35,190 --> 00:01:39,800 Kaya mong gamitin ang isang Vigenere cipher sa panda keyword, dahil, na rin, ikaw din 25 00:01:39,800 --> 00:01:41,160 i pandas. 26 00:01:41,160 --> 00:01:47,140 >> Ang unang titik, ko, ay Paglipat sa pamamagitan ng p, na nagbibigay sa x, 15 titik pagkatapos kong, 27 00:01:47,140 --> 00:01:52,850 dahil 15 p ay ang ika-16 titik ng alpabeto. 28 00:01:52,850 --> 00:01:56,750 Ang susunod na titik sa plain text ay ang isang puwang, sa gayon ay hindi mai-Paglipat. 29 00:01:56,750 --> 00:02:00,420 At sa index ng keyword hindi magbabago. 30 00:02:00,420 --> 00:02:05,440 >> Pagkatapos ay sa susunod na sulat sa plain text ay l, Paglipat sa pamamagitan ng, na hindi shift 31 00:02:05,440 --> 00:02:10,930 ang plain na sulat teksto sa lahat, dahil isang ay ang 0 titik ng alpabeto. 32 00:02:10,930 --> 00:02:14,980 Ang proseso ay nagpatuloy, ang pagsulong keyword na character sa tuwing mayroong isang 33 00:02:14,980 --> 00:02:16,840 sulat sa plain text. 34 00:02:16,840 --> 00:02:21,850 Sa sandaling ang huling sulat sa keyword ay naabot, ang keyword bumabalot sa paligid at 35 00:02:21,850 --> 00:02:25,890 nagbabago sa susunod na plain teksto ng sulat sa pamamagitan ng p. 36 00:02:25,890 --> 00:02:27,170 X lvne noh. 37 00:02:27,170 --> 00:02:29,180 Paano romantikong. 38 00:02:29,180 --> 00:02:33,120 >> Kaya ibinigay na katangian ng, paano mo convert na sa nararapat na 39 00:02:33,120 --> 00:02:34,590 Cipher shift? 40 00:02:34,590 --> 00:02:37,870 Subukan ang paghahambing ng ASCII mga halaga sa shift. 41 00:02:37,870 --> 00:02:41,530 Marahil, maaari kang makahanap ng isang relasyon sa pagitan ng mga titik at ang kanilang mga 42 00:02:41,530 --> 00:02:44,550 alpabetikong index gamit ang ASCII matematika. 43 00:02:44,550 --> 00:02:48,850 Maaari mong idagdag o ibawas sa isang character mula sa isa pang upang makakuha 44 00:02:48,850 --> 00:02:51,630 mo ang nais na resulta? 45 00:02:51,630 --> 00:02:55,480 >> Tandaan na ang mga pagbabago para sa uppercase at maliliit na mga titik ay pareho. 46 00:02:55,480 --> 00:02:59,510 Kaya marahil ay kailangan mong kilalanin ang dalawang mga katulad na formula upang kumatawan sa 47 00:02:59,510 --> 00:03:03,570 shift, isa para sa isang uppercase keyword karakter, at isa 48 00:03:03,570 --> 00:03:06,510 para sa isang maliit na isa. 49 00:03:06,510 --> 00:03:10,630 >> Susunod, tandaan na ang mga keyword advances lamang kung ang mga character sa 50 00:03:10,630 --> 00:03:13,520 plain text ay isang sulat at na sa kaso ng mga plain 51 00:03:13,520 --> 00:03:16,020 teksto ay dapat na mapangalagaan. 52 00:03:16,020 --> 00:03:20,280 Kaya kung tinitingnan namin ang formula para sa Vigenere shift, may dalawang index 53 00:03:20,280 --> 00:03:22,880 variable, i at j. 54 00:03:22,880 --> 00:03:26,795 One Sinusubaybayan ng mga posisyon sa plain text, at ang iba pang mga posisyon 55 00:03:26,795 --> 00:03:27,910 sa mga keyword. 56 00:03:27,910 --> 00:03:32,960 Ngunit ang iyong mga plain text ay maaaring maging mas matagal kaysa sa iyong mga keyword, kung saan ang iyong 57 00:03:32,960 --> 00:03:38,290 keyword index kailangang pambalot sa paligid ng likod sa unahan ng keyword. 58 00:03:38,290 --> 00:03:39,870 >> Paano mo gawin ito? 59 00:03:39,870 --> 00:03:43,740 Tignan natin pabalik sa modulo operator. 60 00:03:43,740 --> 00:03:47,280 Modulo ay tinutukoy ay ang natitira paghahati ng dalawang numero. 61 00:03:47,280 --> 00:03:50,680 Ngunit kung ano ang isang aktwal na mga praktikal na gumamit ng modulo? 62 00:03:50,680 --> 00:03:54,340 >> Well, sabihin nating mayroon kang isang malaking pangkat ng mga mga tao, at kailangan mong hatiin sa 63 00:03:54,340 --> 00:03:55,100 tatlong pangkat. 64 00:03:55,100 --> 00:03:59,500 Ang isang paraan upang hatiin ang mga tao sa mga grupo ay ang magkaroon ang mga ito off ang bibilangin. 65 00:03:59,500 --> 00:04:03,520 Ikaw ang numero ng mga grupo ng pangkat numero 1, 2, at 3. 66 00:04:03,520 --> 00:04:08,510 Ang unang tao ay sabihin 1, sa susunod na 2, ang susunod na 3. 67 00:04:08,510 --> 00:04:12,860 Ang mga tao na pagkatapos ay sabihin 1, dahil doon ay hindi isang pangkat 4, at ang 68 00:04:12,860 --> 00:04:15,880 Bilang ng mga pagsisimula sa paglipas ng mula doon. 69 00:04:15,880 --> 00:04:18,209 >> Maaari mong gamitin ang modulo sa gawin ang parehong bagay. 70 00:04:18,209 --> 00:04:22,680 Oras na ito, ang mga grupo ng kalooban maging pangkat 0, 1, at 2. 71 00:04:22,680 --> 00:04:26,960 Ang unang tao, bilang 1 modulo 3, ay 1. 72 00:04:26,960 --> 00:04:29,830 Tao 2 3 modulo ay 2. 73 00:04:29,830 --> 00:04:32,460 Tao 3 modulo 3 ay 0. 74 00:04:32,460 --> 00:04:38,470 Tao 4 modulo 3 ay nagbibigay sa 1, at sa gayon ang grupo Maaari I-wrap sa paligid. 75 00:04:38,470 --> 00:04:44,700 >> Kaya kung kumuha ka ng isang index at modulo na-index sa pamamagitan ng isang maximum na laki, ang 76 00:04:44,700 --> 00:04:49,820 resulta ay hindi kailanman ay magiging mas malaki kaysa sa o katumbas ng laki, na nangangahulugan na sa iyo 77 00:04:49,820 --> 00:04:52,330 maaaring taasan ang bilang index magkano hangga't gusto mo. 78 00:04:52,330 --> 00:04:57,400 At hangga't modulo mo ang index sa pamamagitan ng numero sa ilan, hindi ka makakakuha ng isang numero 79 00:04:57,400 --> 00:04:58,510 mas malaki kaysa sa na. 80 00:04:58,510 --> 00:05:04,500 Kaya kami ay may 10 mga tao sa halip ng 5, at Gusto nila ang lahat makapag itinalaga sa mga grupo 81 00:05:04,500 --> 00:05:07,480 numero ng 0, 1, o 2. 82 00:05:07,480 --> 00:05:11,680 >> Subukan na mag-aplay ito sa pambalot sa ibabaw ng keyword, maliban sa halip ng pag-uuri 83 00:05:11,680 --> 00:05:16,050 mga tao sa mga numero group na nais mong ang index ng keyword sa gayon maaari mong 84 00:05:16,050 --> 00:05:19,080 makuha ang karapatan ng character para sa shift na walang paglampas sa 85 00:05:19,080 --> 00:05:21,836 haba ng string. 86 00:05:21,836 --> 00:05:24,790 Gamit na, mayroon kang ang iyong Vigenere cipher. 87 00:05:24,790 --> 00:05:27,790 Ang pangalan ko ay Zamyla, at ito ay CS50. 88 00:05:27,790 --> 00:05:32,566