Zamyla چان: بیایید گام تا ما بازی با Vigenere رمزنگاری است. رمزنگاری ویژنر است بسیار شبیه به سزار، به جز در سزار ما گذشت در تنها یک عدد صحیح به عنوان کلیدی ما است. در ویژنر ما در حال رفتن به تصویب در یک کلمه کلیدی است. بنابراین، اگر من می خواستم برای تغییر متن رمزی این CS 50 است ohai، پس از آن که بدان معنی است که هر حرف در ohai است که به عنوان کلید خدمت می کنند، و من قصد دارم به چرخه بیش از که کلمه کلیدی برای تغییر من ساخت متن رمزی سختتر برای رمزگشایی. به چه معنی است تغییر با کلمه کلیدی. خب، کلمه کلیدی یک رشته است که در آن هر نامه مربوط تا حدودی تغییر عدد صحیح است. بنابراین، O مربوط به یک کلید از 14، ساعت به یک کلید از 7، دارای یک کلید 0، به طوری که هر چیزی را تغییر دهید، و پس از آن دارای یک کلید از 8. می گویند من ویژنر A با فرار متن ساده این خوبی CS50 است، که به سادگی می دهد من یک رشته بدون تغییر. توجه کنید که این معادل است در حال اجرا سزار با یک کلید صفر است. در واقع، در حال اجرا ویژنر با هر تک کاراکتر خواهد بود معادل به در حال اجرا سزار با همان عدد صحیح است. همه حق است، بنابراین، از آنجا آنها بسیار شبیه من می خواهم می در واقع توصیه می کنند که اگر شما می خواهم به شما فقط می توانید کپی سزار خود را کد را در کد ویژنر خود را. همه چیز تغییر خواهد کرد، اما حداقل شما برخی از ستون فقرات که شما می توانید با کار. از آنجا که TODOS همان ما می خواهیم هستند برای دریافت کلید، دریافت متن ساده، رمز درآورد که متن ساده، و سپس چاپ که از. درست مثل سزار کلید است که به در عنوان خط فرمان دوم به تصویب رسید استدلال موجود در شاخص و argv 1، اما آن را متفاوت است این زمان دلیل آن را باید به ترتیب حروف الفبا می باشد. بنابراین، ما باید به تکرار بیش از هر شخصیت واحد در آن کلید که کاربر گذشت در، و اطمینان حاصل شود که هر حرف الفبا است به منظور ادامه. هنگامی که ما انجام داده ایم که، پس ما می توانید رشته از کاربر دریافت کنید، همانطور که ما قبل از انجام. و در حال حاضر، ما به قلب آمده از مشکل را برای ویژنر، که است که درست مثل سزار، چگونه به شکل الگوی enciphering را و معادله، و به رمز درآورد کل متن. بنابراین، شما متوجه خواهید شد که معادله برای تغییر ویژنر بسیار شبیه به یکی از سزار است. تنها تفاوت این است که به جای یک متغیر K قبل، در حال حاضر K دارای نویس، نشان می دهد حرف j ام از کلید است. اجازه دهید از طریق یک مثال راه رفتن. می گویند شما می خواست به تصویب یک راز پیام بر روی له خود را، من که دوست دارید. خوب، برای کلید خود را چیزی است که خود را انتخاب کنید مطمئن شوید له می داند که دوست دارید، پانداها. همه حق است، پس چگونه ما این تغییر؟ خب، ما باید شاخص متن ما است. که در حرف اول و به طوری که شاخص های اصلی ما است است که در P، اولین نامه ای که در کلمه پاندا است. بنابراین، تغییر من توسط P ما X می دهد، پس از آن ما پیشبرد شاخص متن. این ما را به یک فضای. در حال حاضر، فضای خالی است غیر الفبایی است، به طوری که بدان معنی است که، که فقط انتقال حق را به متن رمزی، ما یک فضا قرار داده وجود دارد، و ما نمی پیشبرد شاخص کلیدی ما است. بنابراین، ما هنوز در ص در این نقطه است. ما به بعدی پیش شاخص در متن است. و در حال حاضر، به دلیل این است که یک نامه، حروف کوچک ل، ما تغییر که توسط شاخص بعدی در کلیدی ما است. که است، صفر است که تغییر به طوری که فقط می شود ل در متن رمزی است. سپس، ما پیشبرد هر دو متن، و شاخص های کلیدی به خاطر آن حروف الفبا. پس ما ادامه که تا زمانی که ما به ایمیل در مثل است. همه حق است، بنابراین شما باید توجه کنید در این اشاره است که، از نظر شاخص های اصلی ما، ما در پایان از رسیدهاید کلمه پاندا، پس چه اتفاق می افتد زمانی که ما به بعدی نامه حروف الفبا در متن؟ خب، همه که اتفاق می افتد ما است بسته بندی در اطراف به ابتدا، به شاخص اول کلیدی ما است. بنابراین، پس از آن ما تغییر که Y توسط P به ما N است. و پس از آن، ما همچنان به پایان رساندن را پشتیبانی می کند متن ما را به دریافت NOH X lvne. از این مثال، من نشان داد که ما تنها پیشبرد به نامه بعدی در کلمه کلیدی اگر شخصیت در متن ساده نامه به طوری که isalpha است تابع را در دستی به اینجا می آیند. و، همانطور که در سزار، ما می خواهیم حفظ این مورد، isupper و islower. بنابراین، اضافه کردن این کمی در به شبه خود را. پس چگونه ما شکل از تغییرات کلیدی؟ خوب، اگر شما را به یاد بحث ما بر شاخص به ترتیب حروف الفبا در سزار مشکل، آن را بسیار مشابه است. که در آن یک مربوط به ASCII ارزش 65 اما تغییر از 0، و پس از آن آخرین نامه در الفبای، Z، مربوط به تغییر از 25. شما متوجه خواهید شد که تغییر یکسان است یا نه نامه حروف بزرگ یا پایین تر است. خوب، پس حالا که شما می دانم که چگونه به شکل تغییر عددی است که مربوط به یک شخصیت واحد اجازه بازگشت به معادله است. از آنجا که ما دو متفاوت نویس در اینجا، i و j، که یک اشاره است که ما می خواهیم به پیگیری است از هر دو موقعیت ما در متن و همچنین موقعیت ما در کلید واژه، بنابراین کسانی که دو متغیر جدا از هم هستند که ما می خواهیم به نگه داشتن نگه دارید از. در حال حاضر، موقعیت در متن ما است که برای افزایش هر زمان، به طوری که برای رفتن به یک کمی رو به جلو راست تر عنوان به موقعیت کلمه کلیدی مخالف، که ما می دانیم است به بسته بندی کردن در اطراف، و گاهی اوقات افزایش، گاهی اوقات همان باقی بماند. بنابراین، چگونه پیاده سازی می کنیم قابلیت به بسته بندی کردن در اطراف شاخص برای کلید واژه؟ من قصد دارم به استفاده از حساب کردن به عنوان مثال. شمارش کردن راه محبوب است به تقسیم مردم به دو گروه. بگو من تا به حال 5 نفر و من می خواستم تقسیم آنها را به سه گروه، خوب پس من با شمارش کردن شروع می شود. اولین کسی که می گویند من تعداد تیم یکی هستم، فرد بعدی خواهد بود تعداد تیم دو، سوم شخص تعداد تیم سه. در حال حاضر، من فقط می خواهم سه گروه تا نفر چهارم که در واقع شروع در ابتدا و می گویند، خوب، من تعداد تیم یکی نیز هستم، و فرد بعدی خواهد بود تعداد تیم دو. و، از آنجا، سپس آنها می توانند جدا به گروه خود. بنابراین، چگونه ممکن است من با استفاده از پیمانه برای کمک به من پیاده سازی این تعداد خاموش بسته بندی در سراسر تابع؟ خب، اول شخص شماره 1، وزارت دفاع 3 به ما می دهد 1. 2 وزارت دفاع 3 به ما می دهد 2، و 3 وزارت دفاع 3 به ما می دهد 0. نفر چهارم، شماره 4، 3 MOD به ما می دهد 1، و سپس 5 وزارت دفاع 3 به ما می دهد 2. بنابراین، شما متوجه خواهید شد که حتی اگر تعداد زیادی از مردم که من را افزایش می دهد، و بالاتر از 3، از من هواداران 3 من همیشه اعداد 0، 1، و 2 را دریافت کنید. من هرگز بزرگتر از 3 است. بنابراین، حتی اگر من تا به حال 10 مردم، پس از آن همه از این افراد هنوز هم در درون گروه های 1، 2، و یا 0 باشد. بنابراین، در حال حاضر ما می دانیم که اگر ما یک گروه از 5 و ما همه از آن توسط 3 MOD، پس از آن ما هرگز به رفتن تجاوز گروه 0، 1، 2 و یا. بنابراین، ما که نمیتوانیم به یک گروه شماره است که به 3 یا بالاتر برابر است. بنابراین، حتی اگر من اضافه پنج مردم، سپس همه آنها هنوز هم به گروه اختصاص داده می شود 0، 1، 2 و یا چون من هواداران 3. من هیچ وقت به تجاوز است که کلاه. خوب، پس اجازه دهید ببینیم که اگر ما می توانیم اعمال این مفهوم استفاده از پیمانه به بسته بندی کردن در اطراف شماره گروه و اعمال آن را به ویژنر که در آن ما می خواهیم به استفاده از پیمانه به بسته بندی کردن اطراف شاخص برای کلمه کلیدی. حتی اگر ما در حال افزایش شاخص ما همیشه خواهید مطمئن شوید که ما همیشه بسته بندی در اطراف به ابتدا هرگز بیش از طول رشته. خوب، پس من می دانم که ممکن است آن را کمی خسته کننده باشد. خیلی بیشتر به کار در این ص مجموعه وجود دارد. بنابراین، مطمئن شوید که شما نوشتن یک شبه خوب برای خودتان که شما را در درک و که می شود کار انجام می شود. سعی کنید و آدرس هر تنها خط به طور مستقل بدانند همه کمی تکه های کوچکی از پازل قبل از قرار دادن آن با هم. اطمینان حاصل کنید که شما می توانید کلید را از خط فرمان و اطمینان حاصل شود که آن را حروف الفبا، دریافت متن ساده از کاربر، و سپس در enciphering را، مطمئن شوید که شما بدانید که چگونه برای سری کردن یک حرف، و سپس به تمام رشته پیشرفت با تمام پوشش در اطراف توابع. در نهایت، شما می توانید متن رمزی را چاپ کنید. اسم من Zamyla است، و این ویژنر بود.