روت 13

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

المكافئ العربي: روت-14 
lإن السبب الرئيسي وراء اختيار المفتاح 13 لتمثيل شفرة روت-13 و التي هي حالة خاصة من تشفير قيصر، هو كون العدد 13 يمثل بالضبط نصف عدد حروف الأبجدية اللاتينية (يوجد 26 حرف). وبالتالي، فإن دالتي التشفير وفك التشفير سيكونان متطابقان تماما في هذه الحالة، مما يمَكننا من القيام بالتشفير و بفك التشفير باستخدام نفس الدالة دون الحاجة للقيام بعمليات اضافية أو تطوير خوارزمية اضافية لفك الشفير. لذلك نجد في المقابل خوارزمية روت-5 (بالإنجليزية: ROT-5) للقيام بنفس المهمة باعتبار الأرقام من 0 إلى 9.

على هذا المنوال، يمكننا تطوير خوارزمية مكافئة ل روت-13 موجهة للعمل على الأبجدية العربية. لتطوير هذا المكافئ يجب أولا الحصول على أبجدية زوجية (عدد الحروف الأبجدية لابد أن يكون زوجي). فكما هومعلوم فإن عدد أحرف الأبجدية العربية هو 28. وبالتالي فإن المفتاح المناسب للحصول على دالة شفرة عكسية (بالإنجليزية: self-reciprocal cipher) هو المفتاح 14. في هذه الحالة فإن حرف الألف سيتم تشفيره بحرف الضاد، و سيتم تشفير حرف الباء بحرف الطاء، وهكذا. الجدول التالي يوضح هذه المقابلة بين أحرف النص المجرد و أحرف النص المشفر، و العكس بالعكس.

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

كود برمجي 
على غرار شفرة قيصر، نضع فيما يلي كود برمجي بلغة بايثون يتيح إمكانية تطبيق التشفير الدوراني روت-14 على النصوص العربية. نذكر أن الدالة rot14 هي في نفس الوقت دالة تشفير و فك تشفير.def rot14(message, alphabet):
    output = []
    for letter in message:
        try:
            i = alphabet.index(ord(letter))
        except:
            output.append(letter)
        else:
            output.append(chr(alphabet[(i + 14) % 28]))
            
    return "".join(output)
يجب تعريف alphabet كمجموعة الأحرف العربية الثمانية و العشرين المعرفة في الجدول أعلاه.

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

مراجع 

ثقافة الإنترنت
شيفرات سرية