تشفير الرسالة (Encrypting the Message) - كتاب الأمن السيبراني - الصف 12 - الفصل 1 - المملكة العربية السعودية

الكتاب: كتاب الأمن السيبراني - الصف 12 - الفصل 1 | المادة: الأمن السيبراني | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

الدرس: تشفير الرسالة (Encrypting the Message)

📚 معلومات الصفحة

الكتاب: كتاب الأمن السيبراني - الصف 12 - الفصل 1 | المادة: الأمن السيبراني | المرحلة: الصف 12 | الفصل الدراسي: 1

الدولة: المملكة العربية السعودية | المنهج: المنهج السعودي - وزارة التعليم

نوع المحتوى: درس تعليمي

مستوى الصعوبة: مبتدئ

📝 ملخص الصفحة

تقدم هذه الصفحة شرحاً عملياً لتشفير وفك تشفير الرسائل باستخدام خوارزمية قيصر (Caesar Cipher) في لغة البرمجة بايثون. تبدأ بتعريف دالة `caesar_encrypt` التي تقوم بتشفير الرسالة عن طريق إزاحة الأحرف الأبجدية بمقدار مفتاح محدد، مع معالجة الأحرف الصغيرة والكبيرة بشكل منفصل، وإبقاء الأحرف غير الأبجدية كما هي.

ثم تنتقل إلى شرح فك التشفير من خلال دالة `caesar_decrypt`، التي تعكس عملية التشفير باستخدام نفس المفتاح، مما يسمح باستعادة الرسالة الأصلية. يتم توضيح العملية خطوة بخطوة مع أمثلة برمجية توضح كيفية تنفيذ الخوارزمية.

تتضمن الصفحة أيضاً معلومات عن مصدر المحتوى الرسمي من وزارة التعليم السعودية، مع شعار الوزارة وتواريخ النشر (2023 - 1447)، مما يؤكد على أنها جزء من منهج تعليمي معتمد. هذا المحتوى مناسب للمبتدئين في البرمجة والتشفير، حيث يقدم مفاهيم أساسية بطريقة واضحة.

📄 النص الكامل للصفحة

--- SECTION: تشفير الرسالة (Encrypting the Message) --- تشفير الرسالة (Encrypting the Message) def caesar_encrypt(message, key): # Create a list of alphabet characters alphabet_lower = "abcdefghijklmnopqrstuvwxyz" alphabet_upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" # Create an empty string to store the encrypted message encrypted_message = "" # Iterate through each character in the message for char in message: # Check if character is a lowercase letter if char in alphabet_lower: # Find index of the character in alphabet list char_index = alphabet_lower.find(char) # Move the character to the right by the key new_char_index = (char_index + key) % 26 # Add the replaced character to the encrypted message encrypted_message += alphabet_lower[new_char_index] # Check if character is an uppercase letter elif char in alphabet_upper: char_index = alphabet_upper.find(char) new_char_index = (char_index + key) % 26 encrypted_message += alphabet_upper[new_char_index] else: # Add the character to the encrypted message as it is encrypted_message += char # Return the encrypted message return encrypted_message --- SECTION: فك تشفير الرسالة (Decrypting the Message) --- فك تشفير الرسالة (Decrypting the Message) def caesar_decrypt(encrypted_message, key): # Create a list of lowercase alphabet characters alphabet_lower = "abcdefghijklmnopqrstuvwxyz" # Create a list of uppercase alphabet characters alphabet_upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" # Create an empty string to store the decrypted message decrypted_message = "" وزارة التعليم Ministry of Education 2023 - 1447 118 --- VISUAL CONTEXT --- **IMAGE**: شعار وزارة التعليم Description: شعار وزارة التعليم السعودية، يظهر على شكل نقاط خضراء متجمعة تشكل شكلاً هندسياً، مع نص 'وزارة التعليم' باللغة العربية و 'Ministry of Education' باللغة الإنجليزية أسفله، وتواريخ '2023 - 1447'. Context: Indicates the official source of the textbook content.

🎴 بطاقات تعليمية للمراجعة

عدد البطاقات: 7 بطاقة لهذه الصفحة

ما هي الخطوات الأساسية التي تنفذها دالة caesar_encrypt لتشفير رسالة باستخدام خوارزمية قيصر؟

الإجابة: 1. إنشاء قائمة بالأحرف الأبجدية (صغيرة وكبيرة). 2. إنشاء سلسلة نصية فارغة لتخزين الرسالة المشفرة. 3. التكرار عبر كل حرف في الرسالة الأصلية. 4. التحقق إذا كان الحرف حرفاً صغيراً أو كبيراً. 5. إيجاد مؤشر الحرف في القائمة الأبجدية. 6. حساب المؤشر الجديد بإضافة المفتاح (key) ثم تطبيق عملية modulo 26. 7. إضافة الحرف الجديد المقابل للمؤشر الجديد إلى الرسالة المشفرة. 8. إرجاع الرسالة المشفرة النهائية.

الشرح: تتبع الخوارزمية نهجاً منهجياً: تحدد الأبجدية المرجعية، ثم تعالج كل حرف على حدة عن طريق إزاحته بمقدار ثابت (المفتاح)، مع الحفاظ على الأحرف غير الأبجدية كما هي.

تلميح: ركز على العمليات المنطقية المتسلسلة داخل الحلقة التكرارية (for loop) وكيفية معالجة كل نوع من الأحرف.

التصنيف: صيغة/خطوات | المستوى: متوسط

ما هو الغرض من استخدام العملية (char_index + key) % 26 في خوارزمية تشفير قيصر؟

الإجابة: الغرض هو ضمان أن المؤشر الجديد للحرف المشفر يبقى ضمن نطاق الأبجدية (من 0 إلى 25). عملية الجمع (+ key) تقوم بإزاحة الحرف. عملية modulo (%) تضمن أنه إذا تجاوز المؤشر الناتج نهاية الأبجدية (أي أصبح 26 أو أكثر)، فإنه يلتف ويعود إلى بداية الأبجدية.

الشرح: بدون عملية modulo، إذا حاولنا إزاحة الحرف 'z' بمفتاح 3، فسنحصل على مؤشر خارج النطاق (25+3=28). عملية %26 تحول 28 إلى 2، مما يعيدنا إلى الحرف 'c'، وبذلك نحافظ على العملية ضمن الحلقة الأبجدية.

تلميح: فكر في ما يحدث عندما يكون مجموع (مؤشر الحرف + المفتاح) أكبر من أو يساوي عدد أحرف الأبجدية الإنجليزية.

التصنيف: مفهوم جوهري | المستوى: صعب

كيف تتعامل دالة تشفير قيصر مع الأحرف التي ليست حروفاً أبجدية (مثل المسافات أو علامات الترقيم)؟

الإجابة: تتعامل معها عن طريق إضافتها إلى الرسالة المشفرة كما هي دون أي تغيير. يحدث هذا في الفرع else من الشروط داخل الحلقة التكرارية.

الشرح: هذه ميزة مهمة في الخوارزمية تحافظ على قابلية قراءة تنسيق الرسالة الأساسي، حيث تترك الرموز غير الأبجدية سليمة وتطبق الإزاحة على الأحرف فقط.

تلميح: انظر إلى الجزء من الكود الذي لا يتحقق فيه شرط أن يكون الحرف ضمن الأبجدية الصغيرة أو الكبيرة.

التصنيف: مفهوم جوهري | المستوى: سهل

ما هي الخطوات الأساسية التي تنفذها دالة caesar_encrypt لتشفير رسالة باستخدام خوارزمية قيصر؟

الإجابة: 1. إنشاء قائمة بالأحرف الأبجدية (صغيرة وكبيرة). 2. إنشاء سلسلة نصية فارغة لتخزين الرسالة المشفرة. 3. التكرار عبر كل حرف في الرسالة الأصلية. 4. التحقق مما إذا كان الحرف حرفاً صغيراً أو كبيراً. 5. إيجاد مؤشر الحرف في القائمة الأبجدية. 6. تحريك الحرف إلى اليمين بمقدار المفتاح (key) باستخدام العملية الحسابية (char_index + key) % 26. 7. إضافة الحرف المستبدل إلى الرسالة المشفرة. 8. إرجاع الرسالة المشفرة النهائية.

الشرح: تتبع الخوارزمية نهجاً منهجياً: تحدد المجموعة المرجعية (الأبجدية)، ثم تعالج كل حرف على حدة عن طريق إزاحته بمقدار ثابت، مع الحفاظ على الأحرف غير الأبجدية كما هي.

تلميح: ركز على العمليات المنطقية الرئيسية داخل الحلقة التكرارية (for loop) وكيفية معالجة كل نوع من الأحرف.

التصنيف: صيغة/خطوات | المستوى: متوسط

في خوارزمية تشفير قيصر، ماذا يحدث للحرف إذا لم يكن حرفاً أبجدياً (مثل رقم أو مسافة)؟

الإجابة: يُضاف الحرف إلى الرسالة المشفرة كما هو دون أي تغيير.

الشرح: تهتم خوارزمية قيصر بتشفير الأحرف الأبجدية فقط. أي رمز آخر (أرقام، رموز، مسافات) يبقى في موضعه الأصلي في النص المشفر لضمان قابلية قراءة الرسالة وهيكلتها.

تلميح: انظر إلى الجزء من الكود الذي يعالج الحالات التي لا تنتمي إلى أحد الشرطين الرئيسيين (if و elif).

التصنيف: مفهوم جوهري | المستوى: سهل

ما الغرض من استخدام العملية الحسابية (char_index + key) % 26 في كود تشفير قيصر؟

الإجابة: لضمان أن المؤشر الجديد للحرف (new_char_index) يبقى دائماً ضمن نطاق الأبجدية (من 0 إلى 25)، حتى إذا أدت الإضافة إلى تجاوز نهاية القائمة، حيث يعيدها العملية إلى البداية.

الشرح: معامل الباقي (%) يضمن 'التفاف' المؤشر حول الأبجدية. على سبيل المثال، إذا كان الحرف 'z' (مؤشر 25) والمفتاح 3، فإن (25+3)%26 = 2، والذي سيعود إلى الحرف 'c'.

تلميح: فكر في ما يحدث إذا كان char_index + key يساوي 26 أو أكثر. ماذا يمثل الرقم 26 في هذا السياق؟

التصنيف: مفهوم جوهري | المستوى: صعب

ما الفرق الأساسي في المعالجة بين الأحرف الصغيرة (lowercase) والأحرف الكبيرة (uppercase) في دالة caesar_encrypt؟

الإجابة: يتم معالجة كل نوع باستخدام قائمة أبجدية منفصلة خاصة به (alphabet_lower للأحرف الصغيرة و alphabet_upper للأحرف الكبيرة)، ولكن تطبق عليهما نفس منطق الإزاحة باستخدام المفتاح.

الشرح: هذا الفصل ضروري للحفاظ على حالة الأحرف (case-sensitive) في النص المشفر. الحرف 'A' المشفر يجب أن ينتج حرفاً كبيراً، و 'a' يجب أن ينتج حرفاً صغيراً، حتى لو كان لهما نفس الموضع النسبي في الأبجدية.

تلميح: قارن بين كتتي الكود داخل شرط if char in alphabet_lower وشرط elif char in alphabet_upper.

التصنيف: فرق بين مفهومين | المستوى: متوسط