Zamyla تشان: دعونا تصعيد لدينا اللعبة مع الشفرات vigenere. والشفرات vigenere هو تشبه الى حد بعيد قيصر، باستثناء قيصر مررنا في عدد صحيح واحد كما لدينا مفتاح. في vigenere نحن ذاهبون لتمرير في الكلمة. لذا، إذا أردت أن تحول نص مشفر هذا هو CS 50 من ohai، ثم وهذا يعني أن كل حرف في ohai سوف تكون بمثابة مفتاح، وانا ذاهب الى دورة على تلك الكلمة الرئيسية لتحول بلدي جعل النص المشفر الكثير من الصعب فك. ما يعني أن التحول من الكلمة؟ حسنا، والكلمة هي سلسلة حيث كل حرف يتوافق إلى بعض التحول صحيح. لذلك، س يتوافق مع مفتاح 14 عاما، ح لمفتاح 7، ويحتوي على مفتاح 0، حتى ذلك لن يغير شيئا، وبعد ذلك لديه مفتاح من 8. يقول ركضت vigenere ومع نص عادي هذا هو CS50 جيدا، التي من شأنها أن تعطي ببساطة لي سلسلة دون تغيير. لاحظ أن هذا هو ما يعادل تشغيل قيصر مع مفتاح الصفر. في الواقع، vigenere تشغيل مع أي حرف واحد سيكون أي ما يعادل تشغيل قيصر مع نفس عدد صحيح. كل الحق، لذلك، منذ كانت متشابهة جدا فما استقاموا لكم فاستقيموا يوصي الواقع أنه إذا تريد يمكنك فقط نسخ قيصر الخاص بك الشفرة في شفرة vigenere الخاص بك. الاشياء سوف تتغير، ولكن على الأقل لديك بعض العمود الفقري التي يمكنك التعامل معها. لأن جميع الناس هي نفسها نريد للحصول على المفتاح، احصل على نص عادي، شفر يحول الى شفرة التي نص عادي، ثم طباعة هذا الخروج. تماما مثل قيصر المفتاح هو الذهاب الى تمريرها في كخط الأمر الثاني حجة الواردة في مؤشر ARGV 1، ولكن الأمر مختلف هذه المرة لأنه يجب أن يكون الأبجدي. لذلك، نحن بحاجة إلى تكرار على كل حرف واحد في هذا المفتاح أن المستخدم الذي صدر في، وضمان أن كل حرف أبجدي من أجل الاستمرار. وبمجرد أن فعلت ذلك، ثم نحن يمكن الحصول على سلسلة من المستخدم، تماما كما فعلنا من قبل. والآن، نأتي إلى قلب المشكلة لvigenere، وهو تماما مثل قيصر، وكيفية معرفة نمط التشفير والمعادلة، وشفر يحول الى شفرة النص الأصلي بأكمله. لذلك، ستلاحظ أن معادلة التحول vigenere هي مشابهة جدا لقيصر واحد. الفرق الوحيد هو أن بدلا من ك متغير واحد من قبل، الآن ك لديه منخفض، تشير الرسالة مستشفى جوبا التعليمي من المفتاح. دعونا من خلال المشي على سبيل المثال. يقول أنك أردت تمرير سرا رسالة على سحق الخاص، وأنا أحب لك. حسنا، لديك مفتاح لك اختيار ما بك تعرف سحق يعرف أن تحب، الباندا. كل الحق، لذلك كيف يمكننا تحويل هذا؟ حسنا، لدينا مؤشر الغير مشفرة لدينا. هذا في الحرف الأول و ذلك هو مؤشر لدينا مفتاح الذي هو في ص، أول بريد إلكتروني في كلمة الباندا لدينا. وهكذا، تحول لي من قبل ع يعطينا س، ثم نحن نتقدم مؤشر الغير مشفرة. هذا يحصل لنا إلى الفضاء. الآن، والطابع الفضاء هو غير أبجدية، وهذا يعني أن هذا فقط نقل الحق الى النص المشفر، وضعنا الفضاء هناك، ونحن لا دفع المؤشر لدينا مفتاح. لذلك، نحن ما زلنا في ص في هذه النقطة. نحن نتقدم إلى أخرى مؤشر في نص عادي لدينا. والآن، لأن هذا هو بريد إلكتروني، وصغيرة لتر، ننتقل إلى أنه بحلول مؤشر المقبل في المفتاح لدينا. وهو، الذي هو الصفر التحول بحيث يصبح مجرد للتر في النص المشفر لدينا. ثم، نحن نتقدم كل من عادي، و مؤشر رئيسي لأنه الأبجدي. حتى ذلك الحين نحن نواصل أن حتى نحصل على البريد في مثل. كل الحق، لذلك ستلاحظ في هذا نشير أن، من حيث مؤشر رئيسي لدينا، لقد وصلنا إلى نهاية كلمة الباندا، لذلك ما يحدث عندما نصل الى المرحلة التالية بريد إلكتروني أبجدية في النص الأصلي؟ حسنا، كل ما يحدث هو أننا التفاف حول إلى بداية، لأول مؤشر المفتاح لدينا. لذلك، ثم ننتقل أن سنويا بحلول p لتعطينا ن. ومن ثم، فإننا لا نزال الانتهاء من الترميز لدينا عادي للحصول على س lvne نوه. من هذا المثال، وأنا أظهرت أن نتقدم فقط إلى الحرف التالي في الكلمة إذا كان الحرف في نص عادي هو خطاب لذلك isalpha وظيفة في متناول اليدين هنا. و، تماما كما في قيصر، ونحن نريد ل الحفاظ على الحالة، isupper وislower. لذلك، إضافة هذا القليل في في شبة الكود الخاص بك. فكيف يمكننا معرفة التحولات الرئيسية؟ حسنا، إذا كنت تتذكر مناقشتنا على مؤشرات الأبجدي في قيصر مشكلة، انها مشابهة جدا. حيث A يناظر ASCII قيمة 65 ولكن التحول من 0، ثم الحرف الأخير في الأبجدية، Z، يتوافق مع التحول من 25. ستلاحظ أن التحول غير متطابقة أم لا الرسالة هو حالة العلوي أو السفلي القضية. حسنا، الآن بعد أن كنت معرفة كيفية معرفة التحول الرقمي التي يتوافق مع حرف واحد دعونا نعود إلى المعادلة لدينا. لأن لدينا اثنين من مختلف السفلية هنا، i و j، هذا هو تلميح أننا نريد أن تتبع كل من موقفنا في نص عادي وكذلك موقفنا في الكلمة، حتى أولئك نوعان من المتغيرات المستقلة أننا نريد للحفاظ على عقد. الآن، والموقف في نص عادي لدينا يتم الانتقال إلى زيادة في كل مرة، بحيث سيكون ل أكثر قليلا إلى الأمام على التوالي خلافا لموقف الكلمة، الذي نعرفه أن التفاف حولها، وأحيانا زيادة، أحيانا تبقى نفسها. لذلك، كيف يمكننا تنفيذ وظائف للالتفاف حول مؤشر عن الكلمة؟ انا ذاهب الى استخدام المثال عد قبالة. عد من وسيلة شعبية لتقسيم الناس إلى مجموعات. أقول كان لي 5 أشخاص، وكنت أرغب في تقسيمها إلى ثلاث مجموعات، بالاضافة الى ذلك الحين أود أن أبدأ العد خارج. أول شخص سوف أقول إنني الفريق رقم واحد، فإن الشخص القادم سيكون عدد فريق اثنين، وعدد فريق شخص ثالث ثلاثة. الآن، أريد فقط ثلاثة مجموعات بحيث فإن الشخص الرابع في الواقع تبدأ في بداية ويقول: حسنا، أنا الفريق رقم واحد أيضا، والشخص القادم سيكون فريق الثاني. و، من هناك، وبعد ذلك يمكن فصل في مجموعاتهم. لذلك، كيف يمكن يمكنني استخدام مودولو لمساعدتي في تنفيذ هذا الاعتماد خارج التفاف حول وظيفة؟ حسنا، أول شخص عدد 1، وزارة الدفاع 3 يعطينا 1. 2 وزارة الدفاع 3 يعطينا 2، و 3 وزارة الدفاع 3 يعطينا 0. الشخص الرابع، العدد 4، 3 وزارة الدفاع يعطينا 1، ومن ثم 5 وزارة الدفاع 3 يعطينا 2. لذلك، ستلاحظ أنه على الرغم من عدد من الناس أن لدي يزيد، وفوق 3 منذ أنا الشعيب بنسبة 3 أنا دائما الحصول على الأرقام من 0 و 1 و 2. أنا لم تحصل أكبر من 3. حتى ذلك الحين، حتى لو كان لي 10 الناس، ثم كل من هؤلاء الناس سيظل ضمن مجموعات 1، 2، أو 0. لذلك، نحن نعرف الآن أنه إذا لدينا مجموعة من 5، ونحن وزارة الدفاع كل تلك بنسبة 3، ثم نحن أبدا ل تتجاوز الجماعات 0 أو 1 أو 2. لذلك، نحن لم نذهب للحصول على مجموعة عدد هذا يساوي 3 أو أعلى. لذلك، حتى إذا أضيف خمسة أكثر الناس، ثم كل منهم لا يزال يتم تعيين لمجموعة 0 أو 1 أو 2 لأنني الشعيب بنسبة 3. أنا لن يتجاوز هذا الحد الأقصى. حسنا، دعونا نرى ما اذا كنا نستطيع تطبيق هذا مفهوم استخدام مودولو للالتفاف حول أرقام مجموعة وتطبيق لvigenere حيث نريد لاستخدام مودولو للالتفاف حول مؤشر عن الكلمة. على الرغم من أننا تزايد مؤشر نحن دائما نريد أن نتأكد من أننا دائما التفاف حول إلى البداية لم تتجاوز طول السلسلة. حسنا، وأنا أعلم أنه قد يكون قليلا الساحق. هناك الكثير للقيام في هذه المجموعة ص. لذلك، تأكد من أن تكتب بها وشبة الكود جيدا لنفسك أن تفهم و أن يحصل على هذه المهمة. محاولة لمعالجة كل سطر واحد مستقل معرفة كل قليلا قطع صغيرة من اللغز قبل وضعه معا. تأكد من أنه يمكنك الحصول على المفتاح من سطر الأوامر والتأكد من انها أبجدية، الحصول على نص عادي من المستخدم، ثم في التشفير، تأكد من معرفة كيفية شفر حرف واحد، و من ثم تقدم إلى السلسلة بأكملها مع كل من التفاف حول وظائف. وأخيرا، يمكنك طباعة النص المشفر. اسمي هو Zamyla، وكان هذا vigenere.