1 00:00:00,000 --> 00:00:00,930 2 00:00:00,930 --> 00:00:04,030 >> ZAMYLA Chan:-nin addım edək Vigenere parol ilə oyun. 3 00:00:04,030 --> 00:00:06,710 Vigenère parol deyil Sezar çox oxşar, 4 00:00:06,710 --> 00:00:11,060 Sezar başqa, biz qəbul Bizim əsas kimi bir tam. 5 00:00:11,060 --> 00:00:14,100 Vigenere biz gedirik Bir söz keçmək. 6 00:00:14,100 --> 00:00:19,400 Mən istəyirdim Belə ki, keçmək Bu ohai tərəfindən CS 50 CipherText, 7 00:00:19,400 --> 00:00:23,260 sonra hər bir hərf o deməkdir ki, Ohai əsas kimi xidmət edir, 8 00:00:23,260 --> 00:00:27,160 Mən dövrü artıq gedirəm Mənim shift üçün söz 9 00:00:27,160 --> 00:00:31,930 ciphertext edilməsi daha çox deşifre. 10 00:00:31,930 --> 00:00:34,540 >> Bu nə deməkdir Söz keçmək? 11 00:00:34,540 --> 00:00:38,610 Bəli, söz bir simli edir burada hər məktubu uyğundur 12 00:00:38,610 --> 00:00:41,080 bir tam shift. 13 00:00:41,080 --> 00:00:49,310 Belə ki, o 14 əsas uyğundur, 7 əsas h, a, 0 əsas var 14 00:00:49,310 --> 00:00:54,670 Belə ki, heç bir şey dəyişə bilməz və sonra i 8 əsas var. 15 00:00:54,670 --> 00:01:00,000 >> Mən Vigenere A qaçdı De düz mətn bu CS50 yaxşıdır, 16 00:01:00,000 --> 00:01:02,800 sadəcə verəcək Mənə bir dəyişməz string. 17 00:01:02,800 --> 00:01:08,170 Bu bərabərdir Qeyd edək ki, sıfır bir əsas ilə Sezar çalışır. 18 00:01:08,170 --> 00:01:12,070 Əslində, çalışan Vigenere hər hansı bir xarakteri ilə 19 00:01:12,070 --> 00:01:17,070 çalışan ekvivalent olacaq Həmin tam ilə Caesar. 20 00:01:17,070 --> 00:01:20,400 >> Bütün sağ, belə ki, bu yana onlar istədiyiniz eynidir 21 00:01:20,400 --> 00:01:24,300 həqiqətən gəlir ki, əgər yalnız Sezar köçürə bilərsiniz istəyirəm 22 00:01:24,300 --> 00:01:26,932 Sizin Vigenere kodu daxil kodu. 23 00:01:26,932 --> 00:01:28,640 Things dəyişəcək lakin ən azı var 24 00:01:28,640 --> 00:01:31,110 Siz ilə işləyə bilər bir onurğa. 25 00:01:31,110 --> 00:01:36,410 Todos istəyirik eyni Çünki əsas almaq üçün, düz mətn almaq, 26 00:01:36,410 --> 00:01:40,690 encipher ki düz mətn, və sonra çap. 27 00:01:40,690 --> 00:01:44,980 >> Just Sezar kimi əsas gedir ikinci command line kimi qəbul edilə 28 00:01:44,980 --> 00:01:50,540 arqument argv index olan 1, ancaq bu dəfə fərqli 29 00:01:50,540 --> 00:01:52,560 Bu əlifba olmalıdır, çünki. 30 00:01:52,560 --> 00:01:56,390 Belə ki, biz hər üzərində təkrarlamaq lazımdır ki, əsas bir xarakter 31 00:01:56,390 --> 00:02:00,800 istifadəçi keçdi və təmin edir Hər bir xarakter əlifba olduğunu 32 00:02:00,800 --> 00:02:02,800 davam etmək üçün. 33 00:02:02,800 --> 00:02:05,560 >> Biz sonra ki, həyata sonra, biz istifadəçi string əldə edə bilərsiniz, 34 00:02:05,560 --> 00:02:07,560 yalnız biz əvvəl etdi. 35 00:02:07,560 --> 00:02:10,520 İndi, biz ürək gəlir Vigenere problemin, 36 00:02:10,520 --> 00:02:14,665 olan yalnız necə Sezar, kimi şifrələnməsindən model anlamaq 37 00:02:14,665 --> 00:02:19,760 və tənlik və encipher bütün düz metin. 38 00:02:19,760 --> 00:02:23,280 >> Belə ki, görəcəksiniz Vigenere shift üçün tənlik 39 00:02:23,280 --> 00:02:25,610 Caesar bir çox oxşardır. 40 00:02:25,610 --> 00:02:29,780 Yeganə fərq ki, Bunun əvəzinə bir dəyişən k 41 00:02:29,780 --> 00:02:37,270 əvvəl, indi k bir simge var, əsas Jth məktub ifadə. 42 00:02:37,270 --> 00:02:39,560 >> Nin bir misal vasitəsilə gəzmək edək. 43 00:02:39,560 --> 00:02:43,830 Bir gizli keçmək istədi De Sizin sökməyin üzərində mesaj, mən sizi istəyirəm. 44 00:02:43,830 --> 00:02:46,325 Yaxşı, sizin əsas üçün bir şey sevimli 45 00:02:46,325 --> 00:02:49,790 bilirəm crush Siz PANDAS istəyirəm ki, bilir. 46 00:02:49,790 --> 00:02:52,290 Bütün hüquqlar, belə ki, biz bu necə keçmək olar? 47 00:02:52,290 --> 00:02:55,500 >> Bəli, biz düz metin index var. 48 00:02:55,500 --> 00:02:59,160 Bu ilk məktub və belə ki, bizim əsas göstəricisidir 49 00:02:59,160 --> 00:03:02,830 olan h, ilk Bizim panda sözü məktubu. 50 00:03:02,830 --> 00:03:08,590 Belə ki, P I dəyişkən us x verir, sonra biz düz metin indeksi inkişaf. 51 00:03:08,590 --> 00:03:10,460 Bu kosmik bizə olur. 52 00:03:10,460 --> 00:03:13,540 İndi, space character qeyri əlifba edir 53 00:03:13,540 --> 00:03:16,930 belə ki, o deməkdir ki, yalnız sağ ciphertext üzərində köçürmələri, 54 00:03:16,930 --> 00:03:23,430 Biz orada bir yer qoymaq, və biz bunu Bizim əsas index inkişaf. 55 00:03:23,430 --> 00:03:25,820 Belə ki, biz bu nöqtədə p hələ istəyirik. 56 00:03:25,820 --> 00:03:30,130 >> Biz növbəti əvvəlcədən Bizim düz metin index. 57 00:03:30,130 --> 00:03:34,030 İndi ki, çünki məktub, kiçik l, 58 00:03:34,030 --> 00:03:37,920 biz ki, keçmək Bizim əsas növbəti index. 59 00:03:37,920 --> 00:03:42,360 Hansı bir sıfır olan bir var shift yalnız olur 60 00:03:42,360 --> 00:03:44,370 Bizim ciphertext bir l. 61 00:03:44,370 --> 00:03:51,120 Sonra, biz düz metin həm inkişaf, və əsas index bu əlifba, çünki. 62 00:03:51,120 --> 00:03:56,210 Beləliklə, biz davam biz kimi e almaq qədər. 63 00:03:56,210 --> 00:04:01,090 >> Bu da görəcəksiniz ki, bütün sağ, Bizim əsas indeksi baxımından ki, qeyd, 64 00:04:01,090 --> 00:04:03,940 biz sonunda əldə etdiyiniz panda söz belə nə 65 00:04:03,940 --> 00:04:08,750 biz növbəti almaq zaman olur düz metin əlifba məktub? 66 00:04:08,750 --> 00:04:12,180 Bəli, olur ki, bütün biz əvvəlinə ətrafında kesmek, 67 00:04:12,180 --> 00:04:14,710 Bizim əsas ilk index. 68 00:04:14,710 --> 00:04:19,570 Belə ki, sonra biz keçmək P y bizə n vermək. 69 00:04:19,570 --> 00:04:26,860 Və sonra, biz encoding başa davam Bizim düz metin x lvne Noh almaq üçün. 70 00:04:26,860 --> 00:04:29,300 >> Bu, məsələn, mən yalnız inkişaf göstərdi ki, 71 00:04:29,300 --> 00:04:33,140 söz növbəti məktub əgər düz mətn xarakter 72 00:04:33,140 --> 00:04:37,480 isalpha belə bir məktub funksiyası burada lazımlı olacaq. 73 00:04:37,480 --> 00:04:43,030 Və yalnız Sezar kimi, biz istəyirik halda, isupper və islower qorumaq. 74 00:04:43,030 --> 00:04:46,100 Belə ki, bu az əlavə Sizin pseudocode daxil. 75 00:04:46,100 --> 00:04:48,510 >> Belə ki, necə biz əsas növbədə anlamaq edirsiniz? 76 00:04:48,510 --> 00:04:53,030 Bəli, bizim müzakirə geri əgər Sezar əlifba göstəriciləri üzrə 77 00:04:53,030 --> 00:04:55,370 problem, çox oxşar. 78 00:04:55,370 --> 00:05:01,130 >> A ASCII uyğun harada 65 dəyəri lakin 0 shift, 79 00:05:01,130 --> 00:05:03,550 və sonra son məktubu əlifbası ilə, Z, 80 00:05:03,550 --> 00:05:06,940 25 növbədə uyğundur. 81 00:05:06,940 --> 00:05:10,320 Siz shift görəcəksiniz eyni olub-olmadığını 82 00:05:10,320 --> 00:05:14,880 məktub yuxarı halda və ya aşağı haldır. 83 00:05:14,880 --> 00:05:17,700 >> OK, belə ki, indi ki, anlamaq üçün necə 84 00:05:17,700 --> 00:05:21,470 ədədi shift ki, bir xarakter uyğundur 85 00:05:21,470 --> 00:05:24,050 Bizim tənlik geri imkan verir. 86 00:05:24,050 --> 00:05:28,180 biz müxtəlif iki var Burada subscripts, i və j, 87 00:05:28,180 --> 00:05:32,130 biz takip etmək istəyirəm bir işarə var düz metin həm mövqe 88 00:05:32,130 --> 00:05:36,600 eləcə də söz bizim mövqeyi, belə ki, o iki ayrı dəyişənlər var 89 00:05:36,600 --> 00:05:39,010 biz bir gözləməyə saxlamaq istəyirəm. 90 00:05:39,010 --> 00:05:42,580 >> Bizim düz metin İndi, mövqe hər zaman artırmaq niyyətindədir, 91 00:05:42,580 --> 00:05:45,530 belə ki, bir olacaq az daha düz irəli 92 00:05:45,530 --> 00:05:49,750 mövqeyi söz fərqli olaraq, Biz bilirik ki, ətrafında kesmek var, 93 00:05:49,750 --> 00:05:52,910 və bəzən arttırmayı, bəzən eyni qalmaq. 94 00:05:52,910 --> 00:05:55,430 Belə ki, necə biz həyata nə funksionallığı 95 00:05:55,430 --> 00:05:59,820 ətrafında kesmek üçün söz üçün index? 96 00:05:59,820 --> 00:06:01,640 >> Mən off saymaq nümunə istifadə gedirəm. 97 00:06:01,640 --> 00:06:06,100 off hesablanması məşhur yoldur qrupa nəfər split. 98 00:06:06,100 --> 00:06:10,660 De Mən 5 nəfər idi və mən istədi üç qrupa onları split, 99 00:06:10,660 --> 00:06:13,640 də sonra off sayılması ilə başlayacaq. 100 00:06:13,640 --> 00:06:16,980 ilk şəxs ki Mən komanda bir nömrəli deyiləm demək 101 00:06:16,980 --> 00:06:21,030 növbəti nəfərlik qrup sayı ola bilər iki, üçüncü nəfərlik qrup sayı 102 00:06:21,030 --> 00:06:21,910 üç. 103 00:06:21,910 --> 00:06:25,910 İndi yalnız üç qruplar belə istəyirəm dördüncü şəxs həqiqətən ki 104 00:06:25,910 --> 00:06:30,160 başında və demək, yaxşı, Mən də komanda bir nömrəli deyiləm, 105 00:06:30,160 --> 00:06:32,890 və növbəti şəxs komanda sayı iki ola bilər. 106 00:06:32,890 --> 00:06:37,660 Və oradan, onlar bilər onların qrupa ayırmaq. 107 00:06:37,660 --> 00:06:41,130 >> Belə ki, necə modulo istifadə edə bilər Mənə həyata keçirmək üçün 108 00:06:41,130 --> 00:06:44,160 Bu funksiya ətrafında paketi off saymaq? 109 00:06:44,160 --> 00:06:50,140 Bəli, ilk şəxs 1 nömrəli, mod 3 US 1 verir. 110 00:06:50,140 --> 00:06:54,690 2 mod 3 ABŞ 2 verir 3 mod 3 bizə 0 verir. 111 00:06:54,690 --> 00:07:02,140 >> dördüncü şəxs, sayı 4, mod 3 US 1 verir, sonra 5 mod 3 Bizə 2 verir. 112 00:07:02,140 --> 00:07:05,370 Belə ki, baxmayaraq ki, ki, görürsünüz Mən insanların sayı 113 00:07:05,370 --> 00:07:11,210 artırır və yuxarıda 3-ci ildən 3 modding alıram 114 00:07:11,210 --> 00:07:15,250 Mən həmişə nömrələri 0, 1, 2 almaq. 115 00:07:15,250 --> 00:07:19,040 Mən 3-dən böyük almaq heç vaxt. 116 00:07:19,040 --> 00:07:22,630 Beləliklə, mən 10 idi, hətta sonra insanlar, insanların bütün 117 00:07:22,630 --> 00:07:27,430 hələ qrupları 1, 2, və ya 0 ərzində olacaq. 118 00:07:27,430 --> 00:07:33,560 >> Belə ki, indi biz bilirik ki, biz bir qrup varsa 5 Biz 3 hamısı mod, 119 00:07:33,560 --> 00:07:38,180 sonra biz heç vaxt olacaq qruplar 0, 1, 2 və ya artıq. 120 00:07:38,180 --> 00:07:43,430 Belə ki, biz heç bir qrup almaq olacaq 3 və ya yuxarıda bərabər nömrəsi. 121 00:07:43,430 --> 00:07:46,980 Belə ki, mən daha beş əlavə, hətta sonra insanlar, onların hamısı 122 00:07:46,980 --> 00:07:53,150 hələ qrupları təyin olunacaq 0, 1 və ya 2 I 3 modding edirəm, çünki. 123 00:07:53,150 --> 00:07:56,510 Mən heç vaxt cap artıq gedirəm. 124 00:07:56,510 --> 00:08:00,800 >> OK, belə ki, biz müraciət edə bilərsiniz əgər in görək modulo istifadə bu anlayış 125 00:08:00,800 --> 00:08:03,710 ətrafında kesmek üçün qrup nömrələri və tətbiq 126 00:08:03,710 --> 00:08:08,000 istədiyimiz harada Vigenere üçün ətrafında kesmek üçün modulo istifadə 127 00:08:08,000 --> 00:08:10,220 söz üçün index. 128 00:08:10,220 --> 00:08:12,830 Hətta biz incrementing edirik olsa index həmişə 129 00:08:12,830 --> 00:08:17,260 əmin həmişə biz etmək istəyirik əvvəldən ətrafında kesmek 130 00:08:17,260 --> 00:08:20,050 heç-dən çox simli uzunluğu. 131 00:08:20,050 --> 00:08:23,510 >> OK, belə ki, mən bu ola bilər bilirik bir az böyük. 132 00:08:23,510 --> 00:08:26,670 Bu p set etmək üçün bir çox daha çox var. 133 00:08:26,670 --> 00:08:30,050 Belə ki, yazmaq əmin olun Özünüz üçün bir yaxşı pseudocode 134 00:08:30,050 --> 00:08:32,870 Siz anlamaq ki, ki, görülən iş alır. 135 00:08:32,870 --> 00:08:35,580 Keçir və hər müraciət vahid xətt müstəqil 136 00:08:35,580 --> 00:08:38,370 həyata figuring bütün kiçik Bu puzzle kiçik ədəd 137 00:08:38,370 --> 00:08:40,260 birlikdə qoyulması əvvəl. 138 00:08:40,260 --> 00:08:43,110 >> əldə edə bilərsiniz əmin olun command line əsas 139 00:08:43,110 --> 00:08:46,780 və bu əlifba var ki, təmin istifadəçi düz mətn almaq, 140 00:08:46,780 --> 00:08:51,010 və sonra şifrləmə, siz əmin olun bir məktub encipher üçün necə, 141 00:08:51,010 --> 00:08:56,130 və sonra bütün simli tərəqqi funksiyaları ətrafında paketi bütün. 142 00:08:56,130 --> 00:08:59,610 Nəhayət, ciphertext çap edə bilərsiniz. 143 00:08:59,610 --> 00:09:04,050 >> My name, bir Zamyla bu Vigenere idi. 144 00:09:04,050 --> 00:09:07,757