تشفير التشفير باستخدام بايثون

Tshfyr Altshfyr Bastkhdam Baythwn



موضوع المحتويات:

  1. مقدمة
  2. المعرفة المسبقة
  3. معادلة التشفير
  4. تشفير التشفير باستخدام بايثون
  5. إثبات المفهوم
  6. خاتمة
  7. الأسئلة المتداولة (الأسئلة الشائعة)

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

المعرفة المسبقة

لكي تفهم بعمق موضوع اليوم، عليك أن تفهم المفاهيم التالية:







  • القاسم المشترك الأكبر (GCD) والعدد الأولي المشارك
  • الحساب وحدات

تم شرح هذه المفاهيم بالتفصيل في المقالة السابقة بعنوان 'Affine Cipher Mathematical Approach'.



معادلة التشفير

لنبدأ بصيغة تشفير تشفير Affine:



E(x) = (a.x + b) mod m
سابق) يشير إلى تشفير الفهرس الأبجدي x
أ قيمة فهرس للمفتاح الأول 'الخاص'.
س قيمة فهرس للحرف العادي
ب قيمة فهرس المفتاح الثاني (قيمة التحول الإضافية)
وزارة الدفاع م عمليات modulo للمبلغ الإجمالي للأبجدية وهو 26


بديل الصورة والتعليق : معادلة التشفير





على سبيل المثال، نريد تشفير النص العادي 'BIMANDO' باستخدام المفتاحين 7 و13. باستخدام فهرس الجدول التالي، نقوم أولاً بتحويل النص العادي إلى الرقم المقابل له:


بديل الصورة والتعليق : ترقيم الفهرس



يتم تحويل النص العادي 'BIMANDO' إلى رقم فهرس إلى '1 8 12 0 13 3 14'.


بديل الصورة والتعليق : تحويل نص عادي إلى قيمة ترقيم فهرس

ومن ثم نطبق حساب المعادلة فتظهر النتيجة كما يلي:


بديل الصورة والتعليق : التشفير التقاربي

لذلك، يتم تشفير النص العادي 'BIMANDO' باستخدام تشفير Affine مع المفتاحين 7 و13 مما يؤدي إلى 'URTNAIH'.

تشفير التشفير باستخدام بايثون

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

1. قم باستيراد المكتبات المطلوبة
يبدأ برنامجنا باستيراد الوحدات الضرورية مثل argparse، وstring، وos لتحليل وسيطة سطر الأوامر، وعمليات السلسلة، والوظائف المتعلقة بنظام التشغيل، على التوالي.

يستورد argparse
يستورد خيط
يستورد أنت

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

الأبجدية = خيط . ascii_lowercase

3. وظيفة تشفير التشفير
هذه هي الوظيفة الأساسية لبرنامجنا. فهو يأخذ نص الإدخال ومفتاحين، 'a' و'b'، ويطبق تشفير Affine على النص، مع الحفاظ على بنية النص.

مواطنه affine_cipher_encryption ( نص , أ , ب ) :
encrypted_text = ''
ل شار في نص:
لو شار. أدنى ( ) في الأبجدية:
لو شار. com.isupper ( ) :
encrypted_text + = مركز حقوق الإنسان ( ( ( أ * ( كلمة ( شار. أدنى ( ) ) - 97 ) + ب ) % 26 ) + 65 )
آخر :
encrypted_text + = مركز حقوق الإنسان ( ( ( أ * ( كلمة ( شار ) - 97 ) + ب ) % 26 ) + 97 )
آخر :

4. الفحص الرئيسي المشروط
في رمز الكتلة هذا، تحقق مما إذا كان يتم تنفيذه باعتباره البرنامج الرئيسي. يقوم بإعداد محلل الوسيطات مع أوصاف البرنامج النصي ووسائطه. الوسيطة المطلوبة ليست سوى مسار لإدخال ملف نصي. عندما لا نحدد مسار الإخراج، نريد منه تعيين الإعداد الافتراضي لاسم ملف الإدخال مع إلحاق '_encrypted' به. بالنسبة إلى وسيطة 'المفاتيح'، نريد أن يتم تنسيقها إلى 'a,b'. ولكن إذا قمنا بتعيينه، فإن الافتراضي هو 5 و 8.

لو __اسم__ == '__رئيسي__' :
محلل = argparse. وسيطةمحلل ( وصف = 'تشفير تشفير Affine من ملف نصي' )
محلل . add_argument ( 'ملف_الإدخال' , يساعد = 'المسار إلى الملف النصي للإدخال' )
محلل . add_argument ( '-ك' , '--مفاتيح' , يكتب = شارع , تقصير = '5.8' , يساعد = 'مفاتيح Affine Cipher بالتنسيق 'a,b'' )
الحجج = محلل . parse_args ( )

أ , ب = خريطة ( كثافة العمليات , الحجج. مفاتيح . ينقسم ( '،' ) )

مع يفتح ( الحجج. input_file , 'ص' ) مثل ملف :
نص = ملف . يقرأ ( )

# استخراج اسم الملف من مسار ملف الإدخال
input_filename , امتداد = أنت . طريق . com.splitext ( الحجج. input_file )
default_output_file = input_filename + '_مشفر' + التمديد

# تشفير النص باستخدام التشفير المتقارب
encrypted_text = affine_cipher_encryption ( نص , أ , ب )

# اكتب النص المشفر إلى ملف جديد
مع يفتح ( default_output_file , 'في' ) مثل ملف :
ملف . يكتب ( encrypted_text )

أخيرًا، بمجرد الانتهاء من وظيفة التشفير، سيقوم برنامجنا بحفظ الإخراج بنفس امتداد الملف مثل ملف الإدخال.

الآن، احفظه في 'affine_cipher.py'. الآن قم بتشغيل البرنامج عن طريق كتابة الأمر التالي:

بيثون affine_cipher. السنة التحضيرية

إذا لم تجد أي خطأ، فإن الإخراج يبدو كما في الصورة التالية:


بديل الصورة والتعليق : برنامج Affine Cipher Python

إثبات المفهوم

لدينا رسالة سرية بالاسم التالي 'message.txt'، ونريد بثها إلى أعضائنا:


بديل الصورة والتعليق : نص عادي

لذلك، نستخدم البرنامج الذي أنشأناه قبل أن نرغب في تشفير هذه الرسالة باستخدام Affine cipher مع المفتاحين 3 و7. الأمر كما يلي:

بيثون affine_cipher. السنة التحضيرية رسالة. رسالة قصيرة 3 , 7


بديل الصورة والتعليق : برنامج Affine Cipher Python

وبسرعة لمح البصر، يتم بنجاح إنشاء الرسالة المشفرة وحفظها في 'message_encrypted.txt'. دعونا نتحقق من شكل الرسالة:


بديل الصورة والتعليق : النص المشفر

كما ترون، الرسالة مشفرة. فقط أعضائنا الذين يعرفون طريقة التشفير ومفاتيحها قادرون على فك تشفير الرسالة.

جربها بنفسك

قم بتنزيل كود مصدر البرنامج هذا على صفحة GitHub الخاصة بنا على https://github.com/bimando/Affine-Cipher .

خاتمة

في الختام، توفر طريقة تشفير Affine، وهي شكل من أشكال التشفير البديل أحادي الأبجدية، أمانًا معززًا من خلال استخدام مفتاحين، مما يتطلب دراسة متأنية أثناء اختيار المفتاح. يعد فهم مفاهيم مثل القاسم المشترك الأكبر (GCD)، والأعداد الأولية المشتركة، والحساب المعياري أمرًا ضروريًا لفهم تعقيدات التشفير الأفيني.

تعمل معادلة تشفير Affine، E(x) = (a.x + b) mod m، كأداة أساسية للتشفير حيث يمثل 'a' و'b' المفاتيح و'x' يرمز إلى فهرس حرف النص العادي. تم توضيح تنفيذ برنامج Python الآلي لعملية تشفير تشفير Affine لتبسيط مهام التشفير واسعة النطاق بكفاءة. يتضمن البرنامج الوظائف الرئيسية بما في ذلك استيراد المكتبات، ورسم الخرائط الأبجدية، ووظيفة التشفير، وتحليل وسيطة سطر الأوامر لمسارات الإدخال والإخراج. والجدير بالذكر أن البرنامج النصي يمكّن الإعدادات الافتراضية للمفاتيح وأسماء ملفات الإخراج لتسهيل عملية التشفير السلسة.

الأسئلة المتداولة (الأسئلة الشائعة)

س1: ما هي شفرة أفين وكيف تختلف عن شفرة قيصر؟

A1: تشفير Affine هو نوع من التشفير البديل أحادي الأبجدية الذي يستخدم مفتاحين، 'a' و'b'، للتشفير. في المقابل، تستخدم تشفير قيصر إزاحة ثابتة لثلاثة مواضع لكل حرف في النص العادي.

س2. ما هي المتطلبات الأساسية لفهم تشفير Affine؟

ج2: لفهم التشفير Affine بشكل كامل، من الضروري أن يكون لديك فهم لمفاهيم مثل القاسم المشترك الأكبر (GCD)، والأعداد الأولية المشتركة، والحساب المعياري.

س3: كيف يمكنني تشفير رسالة باستخدام Affine cipher في Python؟

ج3: لأتمتة عملية تشفير Affine، يمكنك استخدام برنامج Python الموضح في المقالة. يقوم البرنامج بتشفير المدخلات النصية واسعة النطاق بكفاءة، مما يبسط إجراءات التشفير. توفر المقالة إرشادات خطوة بخطوة حول استيراد المكتبات، وتحديد التعيين الأبجدي، وإنشاء وظيفة التشفير، وتحليل وسيطات سطر الأوامر لمسارات الإدخال والإخراج.