سُميت شفرة قيصر على اسم يوليوس قيصر (100 قبل الميلاد - 44 قبل الميلاد)، الذي استخدمها في الاتصالات العسكرية السرية. تشفير قيصر هو تشفير بديل. استخدم يوليوس قيصر في الأصل التحول من ثلاثة لتشفير وفك تشفير الرسائل. يتم تنفيذ التشفير باستخدام دالة تقاربية: f(x)=x+b.
أولاً، يتم تحويل كل حرف من النص الأولي (رسالة للتشفير) إلى رقم من 0 إلى 25، بما يتوافق مع موضعه في الأبجدية اللاتينية التي تحتوي على 26 حرفًا --> (a = 0, b = 1...z = 25).
بعد ذلك، يتم تحويل كل رقم يتم الحصول عليه بواسطة دالة تقاربية (f(x) = 1x + b). يمثل "x" الرقم بينما يتم تعريف "b" أثناء التشفير. "ب" هو المفتاح المستخدم لفك تشفير الرسالة النهائية.
إذا أخذنا جميع الصور ووضعناها في قائمة، فسنحصل على أرقام n تقابل n من الأحرف في النص الأولي. تتمثل الخطوة التالية في إيجاد قيم الوحدة 26 لكل رقم. ( Modulo تعني الباقي )
مثال: المعيار 4 من 19 هو 3 لأن
19 = 4 * 4 + 3
ومن ناحية أخرى، المعيار 26 من 26 هو 0 لأن26 = 26 * 1 + 0
لذلك، نحصل على قائمة جديدة تحتوي على عنصر n، يتراوح كل منها بين 0 و25. يتم تحويل كل هذه الأرقام إلى حروف الأبجدية اللاتينية باستخدام الجداول أدناه.
نقوم أخيرًا بإنشاء الرسالة النهائية من خلال وضع جميع الحروف جنبًا إلى جنب.
يمكن تنفيذ الخطوتين 1 و 4 باستخدام هذه الجداول:
أ | ب | ج | د | ه | ف | ز | ح | أنا | ج | ك | ل | م | ن | يا | ص | س | ر | س | ت | ش | V | دبليو | X | ي | ز |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
إذا علم المهاجم أن الرسالة قد تم تشفيرها باستخدام Caesar Cipher، فيمكنه تجربة جميع التحولات (قيم b من 1 إلى 25) لفك تشفير الرسالة. وهذا ما يسمى طريقة القوة الغاشمة .
يمكننا أيضًا استخدام تحليل التردد لفك تشفير الرسالة حيث يتم تشفير كل حرف بنفس الخوارزمية وأكثر الحروف شيوعًا في اللغة الإنجليزية هي:
باستخدام الجداول أعلاه، يمكن كتابة الهجوم على النحو التالي: 25 0 19 19 0 2 10 25 صور كل رقم:
القائمة الجديدة هي : 29 4 23 23 4 6 14 29
باستخدام طريقة modulo 26 نحصل على:
الرسالة النهائية هي 3 4 23 23 4 6 14 3 وباستخدام الجداول مرة أخرى نقوم بتحويلها في الرسالة المشفرة :
ديكسيجود
يتم تشفير ZATTACKZ باستخدام الدالة x + 4 ويصبح DEXXEGOD .
باستخدام الجداول أعلاه، يمكن كتابة DEXXEGOD على النحو التالي: 3 4 23 23 4 6 14 3 صور كل رقم:
القائمة الجديدة هي: -1 0 19 19 0 2 10 -1
باستخدام طريقة modulo 26 نحصل على :
الرسالة النهائية هي 25 0 19 19 0 2 10 25 وباستخدام الجداول مرة أخرى نقوم بتحويلها في الرسالة المشفرة :
زاتاكس
يتم فك تشفير DEXXEGOD باستخدام الدالة 1x - 4 ويصبح ZATTACKZ .
وهذا ما يسمى طريقة القوة الغاشمة.
باستخدام الجداول المذكورة أعلاه، يمكن كتابة DEXXEGOD على النحو التالي: 3 4 23 23 4 6 14 3
a هو رقم يقع بين 0 و25. (a = 0 يعني أن الرسالة قد تم فك تشفيرها بالفعل)
باستخدام الدالة f(x) = Mod(1x + a, 26) :
يمكننا الحصول على كل هذه النتائج:
أ | نص تم فك تشفيره |
---|---|
1 | fgzzgiqf |
2 | gaahjrg |
3 | حبكش |
4 | ijccjlti |
5 | jkddkmuj |
6 | kleelnvk |
7 | lmffmowl |
8 | com.mnggnpxm |
9 | nohhoqyn |
10 | com.opiiprzo |
11 | com.pqjjqsap |
12 | qrkrtbq |
13 | rsllsucr |
14 | com.stmmtvds |
15 | com.tunnwet |
16 | uvoovxfu |
17 | vwppwygv |
18 | wxqqxzhw |
19 | xyrryaix |
20 | yzsszbjy |
21 | zattackz |
22 | abuubdla |
23 | bcvvcemb |
24 | com.cdwwdfnc |
25 | com.dexxegod |
النص الوحيد المنطقي هو zattackz حتى نتمكن من استنتاج أن المفتاح هو 21 (25 - ب = 21).
يتم فك تشفير DEXXEGOD باستخدام الدالة f(x) = 1x - 4 أو f(x) = 1x + 21 ويصبح ZATTACKZ .
لغة | تشفير | فك التشفير |
---|---|---|
ج | قيصر.ج | قريباً |
ج # | قيصر.cs | قريباً |
سي ++ | main.cpp | main.cpp |
جافا سكريبت | تشفير.js | decrypt.js |
بايثون | encrypt.py | decrypt.py |
سويفت | lib.swift | lib.swift |
npm i @cryptoolsorg/caesarcipher