أنشئ تطبيقًا لشفرة أفين، وهو نظام تشفير قديم نشأ في الشرق الأوسط.
شفرة أفين نوع من شفرات الاستبدال أحادية الأبجدية. يُقابَل كل حرف بما يعادله رقميًا، ثم يُشفَّر باستخدام دالة رياضية، ثم يُحوَّل إلى الحرف المرتبط بقيمته الرقمية الجديدة. وعلى الرغم من أن جميع الشفرات أحادية الأبجدية ضعيفة، فإن شفرة أفين أقوى بكثير من شفرة أتباش، لأنها تمتلك مفاتيح أكثر بكثير.
دالة التشفير هي:
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 أوليتين فيما بينهما.المعكوس الضربي النمطي للعدد 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 ليسا أوليين فيما بينهماإيجاد المعكوس الضربي النمطي للعدد a = 15:
(15 * x) mod 26 = 1(15 * 7) mod 26 = 1، أي 105 mod 26 = 1
7 هو المعكوس الضربي النمطي للعدد 15 mod 26
سجّل في Exercism لتتعلّم وتتقن Scheme عبر 39 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.