أنشئ تطبيقًا للشفرة الأفينية، وهو نظام تشفير قديم نشأ في الشرق الأوسط.
الشفرة الأفينية نوع من شفرات الاستبدال أحادية الأبجدية. يُقابل كل حرف بمكافئه الرقمي، ثم يُشفَّر باستخدام دالة رياضية، ثم يُحوَّل إلى الحرف المرتبط بقيمته الرقمية الجديدة. وعلى الرغم من أن جميع الشفرات أحادية الأبجدية ضعيفة، فإن الشفرة الأفينية أقوى بكثير من شفرة Atbash، لأن عدد مفاتيحها أكبر بكثير.
دالة التشفير هي:
E(x) = (ai + b) mod m
حيث:
i هو فهرس الحرف من 0 إلى طول الأبجدية ناقص 1.m هو طول الأبجدية.
بالنسبة للأبجدية اللاتينية فإن m يساوي 26.a و b عددان صحيحان يشكّلان مفتاح التشفير.يجب أن تكون القيمتان a و m أوليتين فيما بينهما (أو، أوليتين نسبيًا) لكي ينجح فك التشفير التلقائي، أي أن العدد 1 هو عاملهما المشترك الوحيد (يمكن العثور على مزيد من المعلومات في مقالة ويكيبيديا عن الأعداد الأولية فيما بينها).
وإذا لم يكن a أوليًا فيما بينه وبين m، فينبغي لبرنامجك أن يبيّن أن هذا خطأ.
وإلا فينبغي أن يشفّر أو يفك التشفير بالمفتاح المقدَّم.
لأغراض هذا التمرين، تُعدّ الأرقام مدخلات صالحة لكنها لا تُشفَّر.
وتُستبعد المسافات وعلامات الترقيم.
ويُكتب النص المشفَّر في مجموعات ذات طول ثابت تفصل بينها مسافة، وحجم المجموعة التقليدي هو 5 أحرف.
والغرض من ذلك هو جعل تخمين النص المشفَّر بناءً على حدود الكلمات أصعب.
دالة فك التشفير هي:
D(y) = (a^-1)(y - b) mod m
حيث:
y هي القيمة الرقمية لحرف مشفَّر، أي y = E(x)
a^-1 هو المعكوس الضربي النمطي (MMI) للعدد a mod m
a و m أوليتين فيما بينهما.المعكوس الضربي النمطي (MMI) للعدد a هو x بحيث يكون الباقي بعد قسمة ax على m يساوي 1:
ax mod m = 1
يمكن العثور على مزيد من المعلومات حول كيفية إيجاد المعكوس الضربي النمطي وما يعنيه في مقالة ويكيبيديا ذات الصلة.
"test" يعطي "ybty" باستخدام المفتاح a = 5، b = 7
"ybty" يعطي "test" باستخدام المفتاح a = 5، b = 7
"ybty" يعطي "lqul" باستخدام المفتاح الخاطئ a = 11، b = 7
"kqlfd jzvgy tpaet icdhm rtwly kqlon ubstx" يعطي "thequickbrownfoxjumpsoverthelazydog" باستخدام المفتاح a = 19، b = 13
"test" باستخدام المفتاح a = 18، b = 13 خطأ لأن 18 و 26 ليستا أوليتين فيما بينهماإيجاد المعكوس الضربي النمطي (MMI) للعدد a = 15:
(15 * x) mod 26 = 1(15 * 7) mod 26 = 1، أي: 105 mod 26 = 1
7 هو المعكوس الضربي النمطي (MMI) للعدد 15 mod 26
سجّل في Exercism لتتعلّم وتتقن D عبر 92 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.