logo

تشفير قيصر في بايثون

في هذا البرنامج التعليمي، سوف نستكشف إحدى طرق التشفير التي تسمى Caesar Cipher. إنه جزء من التشفير.

مقدمة

في هذه التقنية، يتم استبدال كل حرف بحرف معين في موضع رقم ثابت يكون لاحقًا أو قبل الأبجدية. على سبيل المثال - يتم استبدال الأبجدية B بموضعين أسفل D. D تصبح F وهكذا. سُميت هذه الطريقة على اسم شخصيات الاحتكاك الشهيرة يوليوس قيصر، الذي استخدمها للتواصل مع المسؤولين.

هناك خوارزمية تستخدم لتنفيذ ذلك. دعونا نفهم ما يلي.

مميزات خوارزمية تشفير قيصر

تتكون هذه الخوارزمية من بعض الميزات الموضحة أدناه.

  • هذه التقنية بسيطة جدًا لتطبيق التشفير.
  • يتم استبدال كل نص بالرقم الثابت للموضع لأسفل أو لأعلى مع الأبجدية.
  • إنه نوع بسيط من التشفير البديل.

هناك قيمة عددية مطلوبة لتحديد كل جزء من النص الذي تم نقله للأسفل. تُعرف هذه القيمة الصحيحة أيضًا باسم التحول.

.06 ككسر

يمكننا تمثيل هذا المفهوم باستخدام الحساب المعياري عن طريق تحويل الحرف أولاً إلى أرقام، وفقًا للمخطط، A = 0، B = 1، C = 2، D = 3…….. Z = 25.

ملف CSV قراءة جافا

يمكن استخدام الصيغة الرياضية التالية لتحويل حرف n.

كيفية فك التشفير؟

فك التشفير هو نفس التشفير. يمكننا إنشاء وظيفة من شأنها إنجاز التحول في المسار المعاكس لفك تشفير النص الأصلي. ومع ذلك، يمكننا استخدام الخاصية الدورية للتشفير ضمن الوحدة النمطية.

التشفير (ن) = فك التشفير (26-ن)

يمكن استخدام نفس الوظيفة لفك التشفير. بدلاً من ذلك، سوف نقوم بتعديل قيمة التحول بحيث تحول = 26 - التحول.

تشفير قيصر في بايثون

دعونا نفهم المثال التالي -

نوع القشرة

مثال -

 def encypt_func(txt, s): result = '' # transverse the plain txt for i in range(len(txt)): char = txt[i] # encypt_func uppercase characters in plain txt if (char.isupper()): result += chr((ord(char) + s - 64) % 26 + 65) # encypt_func lowercase characters in plain txt else: result += chr((ord(char) + s - 96) % 26 + 97) return result # check the above function txt = 'CEASER CIPHER EXAMPLE' s = 4 print('Plain txt : ' + txt) print('Shift pattern : ' + str(s)) print('Cipher: ' + encypt_func(txt, s)) 

انتاج:

 Plain txt : CEASER CIPHER EXAMPLE Shift pattern : 4 Cipher: HJFXJWsHNUMJWsJCFRUQJ 

لقد اجتاز الكود أعلاه الشخصية في وقت واحد. قام بنقل كل حرف وفقًا للقاعدة اعتمادًا على إجراءات التشفير وفك تشفير النص.

لقد حددنا مجموعة قليلة من المواضع المحددة التي أدت إلى إنشاء نص مشفر.

اختراق في خوارزمية تشفير قيصر

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

دعونا نفهم المثال التالي.

مثال -

 msg = &apos;rGMTLIVrHIQSGIEWIVGIEWIV&apos; #encrypted msg LETTERS = &apos;ABCDEFGHIJKLMNOPQRSTUVWXYZ&apos; for k in range(len(LETTERS)): transformation = &apos;&apos; for s in msg: if s in LETTERS: n = LETTERS.find(s) n = n - k if n <0: n="n" + len(letters) transformation="transformation" letters[n] else: s print('hacking k #%s: %s' % (k, transformation)) < pre> <p> <strong>Output:</strong> </p> <pre> Hacking k #25: rHNUMJWrIJRTHJFXJWHJFXJW </pre> <h2>Transposition Cipher</h2> <p>Transposition cipher algorithm is a technique where the alphabet order in the plaintext is rearranged to form a cipher text. This algorithm doesn&apos;t support the actual plain text alphabets.</p> <p>Let&apos;s understand this algorithm using an example.</p> <p> <strong>Example -</strong> </p> <p>We will take the simple example called columnar transposition cipher where we write the each character in the pain text in horizontal with specified alphabet width. The vertically written texts are cipher, which create a completely unlike cipher text.</p> <p>Let&apos;s take a plain text, and apply the simple columnar transposition technique as shown below.</p> <img src="//techcodeview.com/img/python-tutorial/89/caesar-cipher-python-2.webp" alt="Caesar Cipher in Python"> <p>We placed the plain text horizontally and the cipher text is created with vertical format as: <strong>hotnejpt.lao.lvi.</strong> To decrypt this, the receiver must use the same table to decrypt the cipher text to plain text.</p> <p> <strong>Code -</strong> </p> <p>Let&apos;s understand the following example.</p> <pre> def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) </pre> <p> <strong>Explanation -</strong> </p> <p>In the above code, we have created a function named <strong>split_len(),</strong> which spitted the pain text character, placed in columnar or row format.</p> <p>The <strong>encode()</strong> method created the cipher text with a key specifying the number of columns, and we have printed each cipher text by reading through each column.</p> <h4>Note - The transposition technique is meant to be a significant improvement in crypto security. Cryptanalyst observed that re-encrypting the cipher text using same transposition cipher shows better security.</h4> <hr></0:>

تشفير التحويل

خوارزمية تشفير النقل هي تقنية يتم فيها إعادة ترتيب الترتيب الأبجدي في النص العادي لتشكيل نص مشفر. لا تدعم هذه الخوارزمية الحروف الهجائية للنص العادي الفعلي.

مصفوفات برمجة جافا

دعونا نفهم هذه الخوارزمية باستخدام مثال.

مثال -

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

لنأخذ نصًا عاديًا، ونطبق تقنية النقل العمودي البسيطة كما هو موضح أدناه.

تشفير قيصر في بايثون

لقد وضعنا النص العادي أفقيًا ويتم إنشاء النص المشفر بتنسيق رأسي على النحو التالي: hotnejpt.lao.lvi. لفك التشفير، يجب على المتلقي استخدام نفس الجدول لفك تشفير النص المشفر إلى نص عادي.

ما حجم شاشة شاشتي

شفرة -

دعونا نفهم المثال التالي.

 def split_len(sequence, length): return [sequence[i:i + length] for i in range(0, len(sequence), length)] def encode(k, plaintxt): order = { int(val): n for n, val in enumerate(k) } ciphertext = &apos;&apos; for index in sorted(order.ks()): for part in split_len(plaintxt, len(k)): try:ciphertext += part[order[index]] except IndexError: continue return ciphertext print(encode(&apos;3214&apos;, &apos;HELLO&apos;)) 

توضيح -

في الكود أعلاه، قمنا بإنشاء وظيفة اسمها سبليت_لين ()، الذي بصق حرف النص الألم، وضعت في شكل عمودي أو صف.

ال تشفير () أنشأت الطريقة النص المشفر باستخدام مفتاح يحدد عدد الأعمدة، وقمنا بطباعة كل نص مشفر من خلال قراءة كل عمود.

ملاحظة - تهدف تقنية النقل إلى أن تكون بمثابة تحسين كبير في أمان التشفير. لاحظ Cryptanalyst أن إعادة تشفير النص المشفر باستخدام نفس تشفير التحويل يظهر أمانًا أفضل.