1 00:00:00,000 --> 00:00:00,930 2 00:00:00,930 --> 00:00:04,030 >> Zamyla چان: بیایید گام تا ما بازی با Vigenere رمزنگاری است. 3 00:00:04,030 --> 00:00:06,710 رمزنگاری ویژنر است بسیار شبیه به سزار، 4 00:00:06,710 --> 00:00:11,060 به جز در سزار ما گذشت در تنها یک عدد صحیح به عنوان کلیدی ما است. 5 00:00:11,060 --> 00:00:14,100 در ویژنر ما در حال رفتن به تصویب در یک کلمه کلیدی است. 6 00:00:14,100 --> 00:00:19,400 بنابراین، اگر من می خواستم برای تغییر متن رمزی این CS 50 است ohai، 7 00:00:19,400 --> 00:00:23,260 پس از آن که بدان معنی است که هر حرف در ohai است که به عنوان کلید خدمت می کنند، 8 00:00:23,260 --> 00:00:27,160 و من قصد دارم به چرخه بیش از که کلمه کلیدی برای تغییر من 9 00:00:27,160 --> 00:00:31,930 ساخت متن رمزی سختتر برای رمزگشایی. 10 00:00:31,930 --> 00:00:34,540 >> به چه معنی است تغییر با کلمه کلیدی. 11 00:00:34,540 --> 00:00:38,610 خب، کلمه کلیدی یک رشته است که در آن هر نامه مربوط 12 00:00:38,610 --> 00:00:41,080 تا حدودی تغییر عدد صحیح است. 13 00:00:41,080 --> 00:00:49,310 بنابراین، O مربوط به یک کلید از 14، ساعت به یک کلید از 7، دارای یک کلید 0، 14 00:00:49,310 --> 00:00:54,670 به طوری که هر چیزی را تغییر دهید، و پس از آن دارای یک کلید از 8. 15 00:00:54,670 --> 00:01:00,000 >> می گویند من ویژنر A با فرار متن ساده این خوبی CS50 است، 16 00:01:00,000 --> 00:01:02,800 که به سادگی می دهد من یک رشته بدون تغییر. 17 00:01:02,800 --> 00:01:08,170 توجه کنید که این معادل است در حال اجرا سزار با یک کلید صفر است. 18 00:01:08,170 --> 00:01:12,070 در واقع، در حال اجرا ویژنر با هر تک کاراکتر 19 00:01:12,070 --> 00:01:17,070 خواهد بود معادل به در حال اجرا سزار با همان عدد صحیح است. 20 00:01:17,070 --> 00:01:20,400 >> همه حق است، بنابراین، از آنجا آنها بسیار شبیه من می خواهم می 21 00:01:20,400 --> 00:01:24,300 در واقع توصیه می کنند که اگر شما می خواهم به شما فقط می توانید کپی سزار خود را 22 00:01:24,300 --> 00:01:26,932 کد را در کد ویژنر خود را. 23 00:01:26,932 --> 00:01:28,640 همه چیز تغییر خواهد کرد، اما حداقل شما 24 00:01:28,640 --> 00:01:31,110 برخی از ستون فقرات که شما می توانید با کار. 25 00:01:31,110 --> 00:01:36,410 از آنجا که TODOS همان ما می خواهیم هستند برای دریافت کلید، دریافت متن ساده، 26 00:01:36,410 --> 00:01:40,690 رمز درآورد که متن ساده، و سپس چاپ که از. 27 00:01:40,690 --> 00:01:44,980 >> درست مثل سزار کلید است که به در عنوان خط فرمان دوم به تصویب رسید 28 00:01:44,980 --> 00:01:50,540 استدلال موجود در شاخص و argv 1، اما آن را متفاوت است این زمان 29 00:01:50,540 --> 00:01:52,560 دلیل آن را باید به ترتیب حروف الفبا می باشد. 30 00:01:52,560 --> 00:01:56,390 بنابراین، ما باید به تکرار بیش از هر شخصیت واحد در آن کلید 31 00:01:56,390 --> 00:02:00,800 که کاربر گذشت در، و اطمینان حاصل شود که هر حرف الفبا است 32 00:02:00,800 --> 00:02:02,800 به منظور ادامه. 33 00:02:02,800 --> 00:02:05,560 >> هنگامی که ما انجام داده ایم که، پس ما می توانید رشته از کاربر دریافت کنید، 34 00:02:05,560 --> 00:02:07,560 همانطور که ما قبل از انجام. 35 00:02:07,560 --> 00:02:10,520 و در حال حاضر، ما به قلب آمده از مشکل را برای ویژنر، 36 00:02:10,520 --> 00:02:14,665 که است که درست مثل سزار، چگونه به شکل الگوی enciphering را 37 00:02:14,665 --> 00:02:19,760 و معادله، و به رمز درآورد کل متن. 38 00:02:19,760 --> 00:02:23,280 >> بنابراین، شما متوجه خواهید شد که معادله برای تغییر ویژنر 39 00:02:23,280 --> 00:02:25,610 بسیار شبیه به یکی از سزار است. 40 00:02:25,610 --> 00:02:29,780 تنها تفاوت این است که به جای یک متغیر K 41 00:02:29,780 --> 00:02:37,270 قبل، در حال حاضر K دارای نویس، نشان می دهد حرف j ام از کلید است. 42 00:02:37,270 --> 00:02:39,560 >> اجازه دهید از طریق یک مثال راه رفتن. 43 00:02:39,560 --> 00:02:43,830 می گویند شما می خواست به تصویب یک راز پیام بر روی له خود را، من که دوست دارید. 44 00:02:43,830 --> 00:02:46,325 خوب، برای کلید خود را چیزی است که خود را انتخاب کنید 45 00:02:46,325 --> 00:02:49,790 مطمئن شوید له می داند که دوست دارید، پانداها. 46 00:02:49,790 --> 00:02:52,290 همه حق است، پس چگونه ما این تغییر؟ 47 00:02:52,290 --> 00:02:55,500 >> خب، ما باید شاخص متن ما است. 48 00:02:55,500 --> 00:02:59,160 که در حرف اول و به طوری که شاخص های اصلی ما است 49 00:02:59,160 --> 00:03:02,830 است که در P، اولین نامه ای که در کلمه پاندا است. 50 00:03:02,830 --> 00:03:08,590 بنابراین، تغییر من توسط P ما X می دهد، پس از آن ما پیشبرد شاخص متن. 51 00:03:08,590 --> 00:03:10,460 این ما را به یک فضای. 52 00:03:10,460 --> 00:03:13,540 در حال حاضر، فضای خالی است غیر الفبایی است، 53 00:03:13,540 --> 00:03:16,930 به طوری که بدان معنی است که، که فقط انتقال حق را به متن رمزی، 54 00:03:16,930 --> 00:03:23,430 ما یک فضا قرار داده وجود دارد، و ما نمی پیشبرد شاخص کلیدی ما است. 55 00:03:23,430 --> 00:03:25,820 بنابراین، ما هنوز در ص در این نقطه است. 56 00:03:25,820 --> 00:03:30,130 >> ما به بعدی پیش شاخص در متن است. 57 00:03:30,130 --> 00:03:34,030 و در حال حاضر، به دلیل این است که یک نامه، حروف کوچک ل، 58 00:03:34,030 --> 00:03:37,920 ما تغییر که توسط شاخص بعدی در کلیدی ما است. 59 00:03:37,920 --> 00:03:42,360 که است، صفر است که تغییر به طوری که فقط می شود 60 00:03:42,360 --> 00:03:44,370 ل در متن رمزی است. 61 00:03:44,370 --> 00:03:51,120 سپس، ما پیشبرد هر دو متن، و شاخص های کلیدی به خاطر آن حروف الفبا. 62 00:03:51,120 --> 00:03:56,210 پس ما ادامه که تا زمانی که ما به ایمیل در مثل است. 63 00:03:56,210 --> 00:04:01,090 >> همه حق است، بنابراین شما باید توجه کنید در این اشاره است که، از نظر شاخص های اصلی ما، 64 00:04:01,090 --> 00:04:03,940 ما در پایان از رسیدهاید کلمه پاندا، پس چه 65 00:04:03,940 --> 00:04:08,750 اتفاق می افتد زمانی که ما به بعدی نامه حروف الفبا در متن؟ 66 00:04:08,750 --> 00:04:12,180 خب، همه که اتفاق می افتد ما است بسته بندی در اطراف به ابتدا، 67 00:04:12,180 --> 00:04:14,710 به شاخص اول کلیدی ما است. 68 00:04:14,710 --> 00:04:19,570 بنابراین، پس از آن ما تغییر که Y توسط P به ما N است. 69 00:04:19,570 --> 00:04:26,860 و پس از آن، ما همچنان به پایان رساندن را پشتیبانی می کند متن ما را به دریافت NOH X lvne. 70 00:04:26,860 --> 00:04:29,300 >> از این مثال، من نشان داد که ما تنها پیشبرد 71 00:04:29,300 --> 00:04:33,140 به نامه بعدی در کلمه کلیدی اگر شخصیت در متن ساده 72 00:04:33,140 --> 00:04:37,480 نامه به طوری که isalpha است تابع را در دستی به اینجا می آیند. 73 00:04:37,480 --> 00:04:43,030 و، همانطور که در سزار، ما می خواهیم حفظ این مورد، isupper و islower. 74 00:04:43,030 --> 00:04:46,100 بنابراین، اضافه کردن این کمی در به شبه خود را. 75 00:04:46,100 --> 00:04:48,510 >> پس چگونه ما شکل از تغییرات کلیدی؟ 76 00:04:48,510 --> 00:04:53,030 خوب، اگر شما را به یاد بحث ما بر شاخص به ترتیب حروف الفبا در سزار 77 00:04:53,030 --> 00:04:55,370 مشکل، آن را بسیار مشابه است. 78 00:04:55,370 --> 00:05:01,130 >> که در آن یک مربوط به ASCII ارزش 65 اما تغییر از 0، 79 00:05:01,130 --> 00:05:03,550 و پس از آن آخرین نامه در الفبای، Z، 80 00:05:03,550 --> 00:05:06,940 مربوط به تغییر از 25. 81 00:05:06,940 --> 00:05:10,320 شما متوجه خواهید شد که تغییر یکسان است یا نه 82 00:05:10,320 --> 00:05:14,880 نامه حروف بزرگ یا پایین تر است. 83 00:05:14,880 --> 00:05:17,700 >> خوب، پس حالا که شما می دانم که چگونه به شکل 84 00:05:17,700 --> 00:05:21,470 تغییر عددی است که مربوط به یک شخصیت واحد 85 00:05:21,470 --> 00:05:24,050 اجازه بازگشت به معادله است. 86 00:05:24,050 --> 00:05:28,180 از آنجا که ما دو متفاوت نویس در اینجا، i و j، 87 00:05:28,180 --> 00:05:32,130 که یک اشاره است که ما می خواهیم به پیگیری است از هر دو موقعیت ما در متن 88 00:05:32,130 --> 00:05:36,600 و همچنین موقعیت ما در کلید واژه، بنابراین کسانی که دو متغیر جدا از هم هستند 89 00:05:36,600 --> 00:05:39,010 که ما می خواهیم به نگه داشتن نگه دارید از. 90 00:05:39,010 --> 00:05:42,580 >> در حال حاضر، موقعیت در متن ما است که برای افزایش هر زمان، 91 00:05:42,580 --> 00:05:45,530 به طوری که برای رفتن به یک کمی رو به جلو راست تر 92 00:05:45,530 --> 00:05:49,750 عنوان به موقعیت کلمه کلیدی مخالف، که ما می دانیم است به بسته بندی کردن در اطراف، 93 00:05:49,750 --> 00:05:52,910 و گاهی اوقات افزایش، گاهی اوقات همان باقی بماند. 94 00:05:52,910 --> 00:05:55,430 بنابراین، چگونه پیاده سازی می کنیم قابلیت 95 00:05:55,430 --> 00:05:59,820 به بسته بندی کردن در اطراف شاخص برای کلید واژه؟ 96 00:05:59,820 --> 00:06:01,640 >> من قصد دارم به استفاده از حساب کردن به عنوان مثال. 97 00:06:01,640 --> 00:06:06,100 شمارش کردن راه محبوب است به تقسیم مردم به دو گروه. 98 00:06:06,100 --> 00:06:10,660 بگو من تا به حال 5 نفر و من می خواستم تقسیم آنها را به سه گروه، 99 00:06:10,660 --> 00:06:13,640 خوب پس من با شمارش کردن شروع می شود. 100 00:06:13,640 --> 00:06:16,980 اولین کسی که می گویند من تعداد تیم یکی هستم، 101 00:06:16,980 --> 00:06:21,030 فرد بعدی خواهد بود تعداد تیم دو، سوم شخص تعداد تیم 102 00:06:21,030 --> 00:06:21,910 سه. 103 00:06:21,910 --> 00:06:25,910 در حال حاضر، من فقط می خواهم سه گروه تا نفر چهارم که در واقع 104 00:06:25,910 --> 00:06:30,160 شروع در ابتدا و می گویند، خوب، من تعداد تیم یکی نیز هستم، 105 00:06:30,160 --> 00:06:32,890 و فرد بعدی خواهد بود تعداد تیم دو. 106 00:06:32,890 --> 00:06:37,660 و، از آنجا، سپس آنها می توانند جدا به گروه خود. 107 00:06:37,660 --> 00:06:41,130 >> بنابراین، چگونه ممکن است من با استفاده از پیمانه برای کمک به من پیاده سازی 108 00:06:41,130 --> 00:06:44,160 این تعداد خاموش بسته بندی در سراسر تابع؟ 109 00:06:44,160 --> 00:06:50,140 خب، اول شخص شماره 1، وزارت دفاع 3 به ما می دهد 1. 110 00:06:50,140 --> 00:06:54,690 2 وزارت دفاع 3 به ما می دهد 2، و 3 وزارت دفاع 3 به ما می دهد 0. 111 00:06:54,690 --> 00:07:02,140 >> نفر چهارم، شماره 4، 3 MOD به ما می دهد 1، و سپس 5 وزارت دفاع 3 به ما می دهد 2. 112 00:07:02,140 --> 00:07:05,370 بنابراین، شما متوجه خواهید شد که حتی اگر تعداد زیادی از مردم که من 113 00:07:05,370 --> 00:07:11,210 را افزایش می دهد، و بالاتر از 3، از من هواداران 3 114 00:07:11,210 --> 00:07:15,250 من همیشه اعداد 0، 1، و 2 را دریافت کنید. 115 00:07:15,250 --> 00:07:19,040 من هرگز بزرگتر از 3 است. 116 00:07:19,040 --> 00:07:22,630 بنابراین، حتی اگر من تا به حال 10 مردم، پس از آن همه از این افراد 117 00:07:22,630 --> 00:07:27,430 هنوز هم در درون گروه های 1، 2، و یا 0 باشد. 118 00:07:27,430 --> 00:07:33,560 >> بنابراین، در حال حاضر ما می دانیم که اگر ما یک گروه از 5 و ما همه از آن توسط 3 MOD، 119 00:07:33,560 --> 00:07:38,180 پس از آن ما هرگز به رفتن تجاوز گروه 0، 1، 2 و یا. 120 00:07:38,180 --> 00:07:43,430 بنابراین، ما که نمیتوانیم به یک گروه شماره است که به 3 یا بالاتر برابر است. 121 00:07:43,430 --> 00:07:46,980 بنابراین، حتی اگر من اضافه پنج مردم، سپس همه آنها 122 00:07:46,980 --> 00:07:53,150 هنوز هم به گروه اختصاص داده می شود 0، 1، 2 و یا چون من هواداران 3. 123 00:07:53,150 --> 00:07:56,510 من هیچ وقت به تجاوز است که کلاه. 124 00:07:56,510 --> 00:08:00,800 >> خوب، پس اجازه دهید ببینیم که اگر ما می توانیم اعمال این مفهوم استفاده از پیمانه 125 00:08:00,800 --> 00:08:03,710 به بسته بندی کردن در اطراف شماره گروه و اعمال 126 00:08:03,710 --> 00:08:08,000 آن را به ویژنر که در آن ما می خواهیم به استفاده از پیمانه به بسته بندی کردن اطراف 127 00:08:08,000 --> 00:08:10,220 شاخص برای کلمه کلیدی. 128 00:08:10,220 --> 00:08:12,830 حتی اگر ما در حال افزایش شاخص ما همیشه 129 00:08:12,830 --> 00:08:17,260 خواهید مطمئن شوید که ما همیشه بسته بندی در اطراف به ابتدا 130 00:08:17,260 --> 00:08:20,050 هرگز بیش از طول رشته. 131 00:08:20,050 --> 00:08:23,510 >> خوب، پس من می دانم که ممکن است آن را کمی خسته کننده باشد. 132 00:08:23,510 --> 00:08:26,670 خیلی بیشتر به کار در این ص مجموعه وجود دارد. 133 00:08:26,670 --> 00:08:30,050 بنابراین، مطمئن شوید که شما نوشتن یک شبه خوب برای خودتان 134 00:08:30,050 --> 00:08:32,870 که شما را در درک و که می شود کار انجام می شود. 135 00:08:32,870 --> 00:08:35,580 سعی کنید و آدرس هر تنها خط به طور مستقل 136 00:08:35,580 --> 00:08:38,370 بدانند همه کمی تکه های کوچکی از پازل 137 00:08:38,370 --> 00:08:40,260 قبل از قرار دادن آن با هم. 138 00:08:40,260 --> 00:08:43,110 >> اطمینان حاصل کنید که شما می توانید کلید را از خط فرمان 139 00:08:43,110 --> 00:08:46,780 و اطمینان حاصل شود که آن را حروف الفبا، دریافت متن ساده از کاربر، 140 00:08:46,780 --> 00:08:51,010 و سپس در enciphering را، مطمئن شوید که شما بدانید که چگونه برای سری کردن یک حرف، 141 00:08:51,010 --> 00:08:56,130 و سپس به تمام رشته پیشرفت با تمام پوشش در اطراف توابع. 142 00:08:56,130 --> 00:08:59,610 در نهایت، شما می توانید متن رمزی را چاپ کنید. 143 00:08:59,610 --> 00:09:04,050 >> اسم من Zamyla است، و این ویژنر بود. 144 00:09:04,050 --> 00:09:07,757