شفرة أتبش

شفرة أتبش

متوسط

التعليمات

أنشئ تطبيقًا لشفرة أتباش، وهي نظام تشفير قديم نشأ في الشرق الأوسط.

شفرة أتباش هي شفرة استبدال بسيطة تعتمد على عكس ترتيب جميع حروف الأبجدية بحيث تصبح الأبجدية الناتجة معكوسة. يُستبدل الحرف الأول بالحرف الأخير، والثاني بثاني حرف من الآخر، وهكذا.

تبدو شفرة أتباش للأبجدية اللاتينية كما يلي:

Plain:  abcdefghijklmnopqrstuvwxyz
Cipher: zyxwvutsrqponmlkjihgfedcba

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

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

الأمثلة

  • تشفير test يعطي gvhg
  • تشفير x123 yes يعطي c123b vh
  • فك تشفير gvhg يعطي test
  • فك تشفير gsvjf rxpyi ldmul cqfnk hlevi gsvoz abwlt يعطي thequickbrownfoxjumpsoverthelazydog

إهمال String.lowercase

حسب إصدار OCaml الذي ثبّته، قد لا يكون استخدام String.lowercase مستحسنًا. ابتداءً من الإصدار 4.03.0 أصبح String.lowercase مهملًا لصالح String.lowercase_ascii. لذا بدلًا من كتابة

String.lowercase "Hello, World!"

استخدم

String.lowercase_ascii "Hello, World!"

راجع توثيق String لمزيد من الدوال المفيدة.


المصدر

ويكيبيديايفتح الرابط في نافذة أو علامة تبويب جديدة
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
OCaml Exercism

مستعد لبدء شفرة أتبش؟

سجّل في Exercism لتتعلّم وتتقن OCaml عبر 60 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.