ROB: היי, אני רוב, ובוא לפענח תכנית Vigenere. הדבר אז קודם כל שאנחנו צריכים לעשות הוא להפוך את בטוח שהמשתמש נכנס למה שציפינו אותם בשורת הפקודה. כך שאם argc הוא לא 2 פירושו המשתמש לא נכנס לנו המחרוזת רוצה להיות משתמש כמו ההצפנה שלנו מחרוזת, או שהם נכנס יותר מדי דברים. ואנחנו לא יודעים מה לעשות עם אלה דברים אחרים. אז אנחנו אומרים להם את מה שהם היה צריך להיות נכנס. ואנחנו חוזרים. עכשיו, בהנחה שתכנית + הייתה 2, אנחנו יכולים תמשיך עם שאר התכנית. אנו כינוי שמו של argv [1] למילת מפתח משתנה. כך שאנחנו לא צריכים להשתמש בשם argv [1] בכל שאר התכנית. ואולי יהיה לנו לשכוח את מה זה אומר וכן הלאה. מילת המפתח הוא שם הרבה יותר נחמד. ואנו תופסים את האורך מייד של מילות המפתח שלנו כאן. אוקיי, אז עכשיו אנחנו רוצים לבדוק כי מילת המפתח שלנו הוא חוקית למעשה. מילת המפתח שאנו משתמשים כדי להצפין מחרוזות פשוט צריך להיות אלפביתי תווים. אם המשתמש נכנס שאינו אלפביתי דמויות, אנחנו צריכים לומר, מילות מפתח חייב להכיל רק דרך Z ולאחר מכן לחזור. אז זה בשביל סובב רצף על פני כל תווים של מילות המפתח שלנו, בודק כי אם הוא לא אלפביתי אז אנחנו צריכים להדפיס אזהרה ש. עכשיו, ברגע שנגיע לנקודה זו, שאנו מכירים שהמחרוזת חייבת להיות נכונה. מילת המפתח חייבת להיות נכונה. ועכשיו אנחנו צריכים לקבל הודעה מ המשתמש שהם רוצים אותנו להצפין עם זה משפט המפתח. אז כדי לקבל את המסר הזה, שיש לנו לעשות בזמן לולאה שהולכת ברציפות מקבל מחרוזת מהמשתמש עד שנכנסים למחרוזת חוקית. בהמשך, אנו רואים כאן במשתנה זה, int nun_letters_seen. אנחנו תראו למה אנחנו צריכים כי בשנייה. אבל זה ללולאה הולך לחזר מאני שווה 0 כל הדרך עד לi שווה n, מה שאומר שאנחנו iterating על כל אפשרי דמויות במסר שלנו. מכיוון שאנחנו רוצים להצפין את כל הדמויות במסר שלנו. אז שם לב שאנחנו עושים אם (isalphamessage [אני], בגלל שאנחנו לא רוצים להצפין תווים שאינם אלפביתי. אם יש סימנים, מרחבים, או במספרים, אנחנו לא רוצה להצפין אותם. עכשיו, בהנחה שזה אלפביתי, אנחנו רוצים קודם להבין מה אנחנו בעצם רוצה להצפין ההודעה באמצעות. אז מה אני מתכוון לעשות את זה? הבה יניחו כי משפט המפתח המשתמש נכנס היה abc. זה מה שאנחנו משתמשים להצפנה. עכשיו, בתמימות, שאנחנו חושבים שזה אומר ש אנחנו רוצים להצפין את התו הראשון המסר שלנו על ידי 0, שכן אמצעי מסתובב האופי של 0. אנחנו רוצים להצפין את התו השני על ידי 1, דמות שלישית ב -2, הדמות הרביעית של 0, החמישי על ידי 1, שישי על ידי 2, וכן הלאה. אך יש לזכור, כי אנו רוצים לדלג רווחים וסימנים ומספרים. משמעות דבר היא שאם המשתמש נכנס שלום עולם כהודעה כי הם רוצים להצפין, ולאחר מכן אנחנו רוצים להצפין את שעות של 0 מתאים ל, הדואר על ידי 1, l על ידי 2, l ב 0, o על ידי 1. אנחנו רוצים לדלג על החלל, מוצפן w על ידי 2, o ב 0, 1, 2, 0. אז שם לב, אם היינו לנו לא פסחנו שטח, ולאחר מכן היינו מוצפן w של 0 ובסופו של דבר עם המחרוזת שגויה. אוקיי, זה מה שאנחנו צריכים משתנים num_letters_seen ל. אם היינו פשוט הולכים להצפנה באמצעות בשיטה זו, שאינה לדלג סמלים, חללים, ומספרים, אז אנחנו יכול פשוט להשתמש במשתנה i כמה לאינדקס לתוך משפט המפתח שלנו עם. אנחנו צריכים להשתמש בnum_letters_seen לשמור אחר המקום בפועל ב משפט מפתח שאנחנו רוצים למדד. אז הנה, אם מילת המפתח שיש לנו, אם num_letter_seen keyword_length mod, כך למה אנחנו צריכים mod לפי אורך מילת מפתח? ובכן, שלום העולם היה דוגמא טובה. אם מילת המפתח היה abc, אז אנחנו צריכים כדי להצפין ברציפות על ידי ולאחר מכן ב לאחר מכן ג, ולאחר מכן לעטוף בחזרה בסביבה, א, ב, ג, א, ב, ג. אז אנחנו צריכים mod על ידי אורך של מילות מפתח כדי לעטוף חזרה בסביבה. אז אם זה אות גדולה, אז אנחנו רוצים להצפין ידי עמדתו של המכתב שבאלף הבית, שלו אנחנו מקבלים רק על ידי הפחתה את א הון ו באופן דומה, לאותיות קטנות, אנחנו יכול לקבל את המפתח שאנחנו רוצים על ידי הפחתה את אותיות קטנות. אז לא משנה אם את המכתב במשפט המפתח היה הון או אות קטנה, אנחנו הולכים להצפין באותו הסכום. עכשיו שיש לנו מפתח שלנו, שאנו רואים כאן, שאם מסר שאני הוא רישיות אופי, אז אנחנו רוצים לחשב את עמדה באלף הבית של ש דמות, להוסיף המפתח שלנו אליו, עוטף את הגב סביב כל כך שאם עברו z אנחנו חוזרים ל, B, C וכן הלאה. ואז, סוף סוף, להוסיף חזרה על א הון אז אנו משמרות בחזרה ל[? Ascii?] מגוון של דמויות אלה במקום מיקום מספרי באלף הבית של דמויות אלה. ואנחנו עושים את אותו דבר עבור מקרה תווים נמוכים יותר. מלבד אנחנו רוצים להחסיר את אותיות קטנות ולהוסיף אותו מחדש ב הסוף, באותיות קטנה. שים לב num_letter_seen שרק מוגדל אם הודעה הייתי אלפביתי. כך אנחנו מדלגים חללים, סמלים ו מספרים במשפט המפתח שלנו, שכן num_letter_seen הוא מה שאנו משתמשים למדד למילות המפתח שלנו. לבסוף, בסופו של הדבר, החברה הודעה כי אני כבר מוצפן, אנחנו להדפיס את ההודעה i. וזהו זה. השם שלי הוא רוב. וזה Vigenere. [השמעת מוסיקה]