1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> ROB: مرحبا، أنا روب، ودعونا فك برنامج Vigenere. 3 00:00:16,980 --> 00:00:21,180 أولا حتى شيء يتعين علينا القيام به هو جعل تأكد أدخلها المستخدم ما كنا نتوقعه 4 00:00:21,180 --> 00:00:23,240 لهم في سطر الأوامر. 5 00:00:23,240 --> 00:00:28,720 حتى إذا ARGC ليس 2 وهذا يعني إما لم المستخدم لا يدخل علينا سلسلة 6 00:00:28,720 --> 00:00:31,780 تريد أن تكون باستخدام تشفير كما لدينا سلسلة، أو أنها 7 00:00:31,780 --> 00:00:32,890 دخلت أشياء كثيرة جدا. 8 00:00:32,890 --> 00:00:35,130 ونحن لا نعرف ما يجب القيام به مع تلك الأشياء الأخرى. 9 00:00:35,130 --> 00:00:37,960 >> لذلك نحن نقول لهم ما ينبغي أن يكون دخل. 10 00:00:37,960 --> 00:00:39,300 ونعود. 11 00:00:39,300 --> 00:00:44,570 الآن، على افتراض أن ARGC كان 2، ويمكننا تواصل مع بقية البرنامج. 12 00:00:44,570 --> 00:00:47,890 >> نحن الاسم المستعار اسم ARGV [1] 13 00:00:47,890 --> 00:00:49,750 في الكلمة متغير. 14 00:00:49,750 --> 00:00:51,860 بحيث لم يكن لدينا ل استخدام اسم ARGV [1] 15 00:00:51,860 --> 00:00:53,050 خلال الفترة المتبقية من البرنامج. 16 00:00:53,050 --> 00:00:55,570 وربما أننا سوف لن ننسى ما وهذا يعني وهلم جرا. 17 00:00:55,570 --> 00:00:57,830 الكلمة هو اسم أجمل بكثير. 18 00:00:57,830 --> 00:01:01,982 وسنقوم الاستيلاء على الفور طول من الكلمة حقنا هنا. 19 00:01:01,982 --> 00:01:07,460 >> موافق، وحتى الآن نحن نريد للتأكد من أن الكلمة لدينا صالحا في الواقع. 20 00:01:07,460 --> 00:01:11,250 الكلمة التي نستخدمها لتشفير سلاسل ينبغي أن يكون مجرد الأبجدي 21 00:01:11,250 --> 00:01:12,400 حرفا. 22 00:01:12,400 --> 00:01:16,830 إذا قام المستخدم بإدخال غير الأبجدي- حرفا، ينبغي أن نقول، الكلمة الرئيسية 23 00:01:16,830 --> 00:01:20,170 يجب أن يحتوي فقط من A إلى Z ومن ثم العودة. 24 00:01:20,170 --> 00:01:24,370 لذلك هذا لتتكرر في كل حلقة حرف من الكلمة لدينا، والتحقق 25 00:01:24,370 --> 00:01:31,870 أنه إذا كان أحد ليس ثم الأبجدي نحن بحاجة إلى طباعة هذا التحذير. 26 00:01:31,870 --> 00:01:36,285 >> الآن، وبمجرد أن نصل إلى هذه النقطة، ونحن نعلم أن السلسلة يجب أن تكون صحيحة. 27 00:01:36,285 --> 00:01:38,230 يجب أن تكون الكلمة الصحيحة. 28 00:01:38,230 --> 00:01:40,880 والآن نحن بحاجة للحصول على رسالة من المستخدم الذي يريدون منا أن 29 00:01:40,880 --> 00:01:43,910 تشفير مع أن العبارة الرئيسية. 30 00:01:43,910 --> 00:01:46,780 لذلك للحصول على تلك الرسالة، لدينا تفعل حين حلقة التي سيكون ل 31 00:01:46,780 --> 00:01:52,650 باستمرار الحصول على سلسلة من المستخدم حتى يدخلوا سلسلة صالحة. 32 00:01:52,650 --> 00:01:58,690 >> استمرار، ونحن نرى هنا هذا المتغير، الباحث nun_letters_seen. 33 00:01:58,690 --> 00:02:01,300 سنرى ماذا نحن بحاجة أنه في الثانية. 34 00:02:01,300 --> 00:02:07,320 ولكن هذا للحلقة هو الذهاب الى تكرار من ط يساوي 0 كل وسيلة تصل إلى i 35 00:02:07,320 --> 00:02:10,940 يساوي ن، وهو ما يعني أننا بالتكرار على كل ممكن 36 00:02:10,940 --> 00:02:13,020 الأحرف في رسالتنا. 37 00:02:13,020 --> 00:02:17,370 لأننا نريد لتشفير جميع الشخصيات في رسالتنا. 38 00:02:17,370 --> 00:02:22,970 حتى إشعار نفعل إذا كان (isalphamessage [أنا]، لأننا لا نريد لتشفير 39 00:02:22,970 --> 00:02:25,660 أحرف غير الأبجدي. 40 00:02:25,660 --> 00:02:28,810 إذا كان هناك رموز ومساحات، أو أرقام، ونحن لا 41 00:02:28,810 --> 00:02:30,730 تريد تشفير تلك. 42 00:02:30,730 --> 00:02:37,220 >> الآن، على افتراض أنه الأبجدي، نريد أولا لمعرفة ما 43 00:02:37,220 --> 00:02:40,890 فعلا تريد لتشفير الرسالة باستخدام. 44 00:02:40,890 --> 00:02:42,710 فماذا يعني ذلك؟ 45 00:02:42,710 --> 00:02:46,740 >> دعونا نفترض أن العبارة الرئيسية كان المستخدم دخلت اي بي سي. 46 00:02:46,740 --> 00:02:49,070 هذا ما نستخدمه لتشفير. 47 00:02:49,070 --> 00:02:54,850 الآن، بسذاجة، ونحن نعتقد وهذا يعني أن نحن نريد لتشفير الحرف الأول 48 00:02:54,850 --> 00:02:59,740 من رسالتنا التي كتبها 0، منذ وسيلة تناوب حرف 0. 49 00:02:59,740 --> 00:03:04,395 >> نحن نريد لتشفير الحرف الثاني بنسبة 1، الحرف الثالث بنسبة 2، 50 00:03:04,395 --> 00:03:09,170 الحرف الرابع 0، خامس بنسبة 1، السادس بنسبة 2، وهلم جرا. 51 00:03:09,170 --> 00:03:14,440 ولكن تذكر، أننا نريد لتخطي المسافات والرموز والأرقام. 52 00:03:14,440 --> 00:03:21,520 وهذا يعني أنه إذا كان المستخدم قد دخل مرحبا العالم كرسالة 53 00:03:21,520 --> 00:03:26,590 انهم يريدون لتشفير، ثم نحن نريد لتشفير ح ب 0 54 00:03:26,590 --> 00:03:32,680 المقابلة لذلك، عن طريق البريد 1، و ل بنسبة 2، 0 لتر من قبل، س ب 1. 55 00:03:32,680 --> 00:03:41,050 نحن نريد لتخطي الفضاء، المشفرة ث بنسبة 2، س ب 0، 1، 2، 0. 56 00:03:41,050 --> 00:03:45,250 حتى إشعار، واذا كنا لم تخطي الفضاء، ثم كنا مشفرة 57 00:03:45,250 --> 00:03:51,240 ث من قبل 0 وانتهت مع سلسلة غير صحيحة. 58 00:03:51,240 --> 00:03:57,470 >> موافق، وهذا هو ما نحتاج متغير num_letters_seen ل. 59 00:03:57,470 --> 00:04:04,450 إذا كنا مجرد الذهاب لتشفير باستخدام هذا الأسلوب، الذي لا تخطي 60 00:04:04,450 --> 00:04:09,860 الرموز، مسافات، والأرقام، ثم نحن يمكن فقط استخدام متغير حسب ما ط 61 00:04:09,860 --> 00:04:12,540 إلى المؤشر إلى العبارة الرئيسية لدينا مع. 62 00:04:12,540 --> 00:04:17,620 نحن بحاجة إلى استخدام num_letters_seen للحفاظ على المسار للمكان الفعلي في 63 00:04:17,620 --> 00:04:21,146 العبارة الرئيسية التي نريد أن المؤشر. 64 00:04:21,146 --> 00:04:32,240 حتى هنا، إذا كانت الكلمة الرئيسية لدينا، إذا num_letter_seen keyword_length وزارة الدفاع، لذلك 65 00:04:32,240 --> 00:04:34,570 لماذا نحن بحاجة إلى وزارة الدفاع بحسب طول الكلمة؟ 66 00:04:34,570 --> 00:04:36,630 >> حسنا، مرحبا العالم كان مثالا جيدا. 67 00:04:36,630 --> 00:04:42,310 إذا كانت الكلمة ABC، ثم نحن بحاجة لتشفير مستمر من قبل ثم ب 68 00:04:42,310 --> 00:04:45,740 ثم ج، ثم لف حول العودة، أ، ب، ج، أ، ب، ج. 69 00:04:45,740 --> 00:04:50,110 لذلك نحن بحاجة إلى وزارة الدفاع من قبل طول الكلمة من أجل العودة التفاف حولها. 70 00:04:50,110 --> 00:04:57,280 >> حتى إذا كان هذا هو حرف كبير، ثم نريد أن تشفير من قبل 71 00:04:57,280 --> 00:05:01,450 موقف تلك الرسالة في الأبجدية، التي نحصل فقط عن طريق 72 00:05:01,450 --> 00:05:06,730 يحذف من رأس المال A. و وبالمثل، لأحرف صغيرة، ونحن 73 00:05:06,730 --> 00:05:13,000 يمكن الحصول على المفتاح الذي نريد من خلال يحذف من صغيرة أ. 74 00:05:13,000 --> 00:05:16,910 ذلك بغض النظر عما إذا كانت الرسالة في العبارة الرئيسية كان رأس المال أو 75 00:05:16,910 --> 00:05:21,640 حرف صغير، ونحن في طريقنا لل تشفير من قبل نفس المبلغ. 76 00:05:21,640 --> 00:05:28,680 >> الآن أن لدينا مفتاح لدينا، ونحن نرى هنا، أنه إذا ط الرسالة هو الكبيرة 77 00:05:28,680 --> 00:05:32,660 حرف، ثم نريد أن حساب موقف في الأبجدية من ذلك 78 00:05:32,660 --> 00:05:39,460 حرف، إضافة مفتاح جهدنا لذلك، والتفاف الظهر حول بحيث إذا ذهبنا الماضي 79 00:05:39,460 --> 00:05:43,170 ض نعود إلى أ، ب، ج، وهلم جرا. 80 00:05:43,170 --> 00:05:49,070 ثم، أخيرا، إضافة مرة أخرى على رأس المال A. ذلك ننتقل مرة أخرى إلى [؟ أسكي؟] 81 00:05:49,070 --> 00:05:52,010 مجموعة من هذه الشخصيات بدلا من موقف رقمية في الأبجدية 82 00:05:52,010 --> 00:05:53,540 من هذه الأحرف. 83 00:05:53,540 --> 00:05:56,610 >> ونحن نفعل نفس الشيء بالنسبة ل أحرف الحالة الأدنى. 84 00:05:56,610 --> 00:06:00,070 إلا أننا نريد أن طرح من صغيرة لوإضافته مرة أخرى على في 85 00:06:00,070 --> 00:06:02,900 نهاية، أحرف صغيرة أ. 86 00:06:02,900 --> 00:06:08,120 تلاحظ أن num_letter_seen فقط زيادة إذا كان رسالة ط 87 00:06:08,120 --> 00:06:09,640 الأبجدي. 88 00:06:09,640 --> 00:06:15,790 هذه هي الطريقة التي تخطي المسافات والرموز و الأرقام في العبارة لدينا مفتاح، منذ 89 00:06:15,790 --> 00:06:20,520 num_letter_seen هو ما نستخدمه إلى الفهرس في الكلمة لدينا. 90 00:06:20,520 --> 00:06:24,540 >> أخيرا، في نهاية المطاف، والآن هذه الرسالة تم تشفيرها ط، ونحن 91 00:06:24,540 --> 00:06:26,280 طباعة رسالة ط. 92 00:06:26,280 --> 00:06:27,890 وهذا كل شيء. 93 00:06:27,890 --> 00:06:28,670 اسمي روب. 94 00:06:28,670 --> 00:06:31,020 وهذا هو Vigenere. 95 00:06:31,020 --> 00:06:32,850 >> [عزف الموسيقى] 96 00:06:32,850 --> 00:06:36,651