القائمة الرئيسية

الصفحات

التنقل السريع
    XOR التشفیربإستخدام البوابة 5

    9


    وكما موضح , NOT وبوابتین AND وبوابتین OR وفي الحقیقة ھذه البوابة مكونة من بوابة
    A.B + A.B في الصورة التالیة, علماً أن قانوھا یمكن فھمھ من المعادلة التالیة
    XOR البوابة
    فلن یكون النتاج صحیح الا اذا AND واستخدمنا C و 2 C نحن نعرف انھ اذا كان لدینا شرطان مثلاً 1
    كان الشرطان صحیحان مثلاً: أي أنھ لن تظھر الرسالة الا اذا كان الشرطان صحیحان اما اذا استخدمنا
    لاظھار نفس الرسالة فلن تظھر اذا كان كلا الشرطان او احدھما صحیحاً. OR المعامل
    ولكن لھذا المعامل خاصیة فریدة And/Or مع المعاملات المعروفة XOR وذلك ھو مقارنة المعامل
    جداً جعلت منھ معاملاً ممیزاً ... سوف نناقشھا ھنا..
    كل المعاملات السابقة یمكنك استخدامھا لمقارنة رقمان فمثلاً اذا كان لدینا الرقم 121 واردنا مقارنتھ مع
    الرقم 34 باستخدام المعاملات الثلاثة السابقة كالتالي:
    تعطي الرقم 123 ,واما OR تعطي الرقم 32 والمقارنة ب AND فسوف تلاحظ ان الناتج من المقارنة ب
    فتعطي الرقم 91 وكل ھذة الارقام ھي ارقام نتجت من مقارنات ھندسیة لا اجد داعي XOR المقارنة ب
    لذكرھا ھنا وما یھمنا الان ھو النتائج ... فھل توحي لك النتائج بشيء ؟ .... طبعاً لا فھي عبارة عن ارقام
    عادیة!!!
    OR والمعامل AND بالنسبة لك لن تعني شیئاً ولكن بالنسبة الى إستعادة القیم مرة أخرى, فإن المعامل
    یرجع لك قیمة ما أدخلتھ. XOR لن یعیدا لك ما أدخلتھ في البدایة, بینما لمعامل
    وھذة ھي الخاصیة الممیزة فیھ ... حیث انك اذا استلمت ملف نصي ثم حولت كل حرف فیھ الى رقم
    كما سبق ثم بعد ،C++ في لغة int( ) في لغة فیجوال بیسك، أو الدالة Asc() الآسكي باستخدام الدالة
    باي رقم تختاره انت ولنفرض 12 ... فانھ سوف تنتج لك ارقام حولھا XOR ذلك قارنت الرقم بواسطة ال
    ثم اعیدھا الى الملف ... وبعد ان تنتھي من كل الحروف في الملف سوف Chr الى حروف بواسطة الدالة
    تجد انھ لدیك ملف نصي بحروف غریبة نتجت عن المقارنة.....
    وبعدھا عندما ترید استاعدة بیاناتك قم بمقارنة حروف الملف المشفر بنفس الرقم ( 12 ) وبالتالي فسوف

    یمتلك خاصیة الاستعادة كما یوضح لك المثال التالي: XOR ینتج الحرف الاصلي لان المعامل 



    1. في لغة فیجوال بیسك: وسأستخدم المفتاح الخاص بالتشفیر = 13 ، على سبیل المثال لا الحصر:
    عدد 2 ، واحد للرسالة textbox عدد 2 ثم أحضرت label سأحضر زر أمر لإدخال قیمة المفتاح، مع
    ثم كتبت الكود التالي: ،visible = False المراد تشفیرھا والآخر للرسالة بعد التشفیر، وجعلت

    ث
    ثم نفذت البرنامج: في البدایة طلب مني إدخال قیمة المفتاح، كتبت 13 ، مباشرة أظھر لي صندوق نص
    الرسالة المراد تشفیرھا:
     
     
     
     
     
     لاحظ بعد ظھور صندوق نص الرسائل كل حرف سأكتبھ سیظھر تشفیره في صندوق النص الثاني:
     
     
     
     
     ھو أنھا أداة تشفیر بإتجاھین، یعني لو أنك أردت XOR ما یفیدنا في موضوع التشفیر بإستخدام البوابة
     
    .Fowzi سیظھر لك مع نفس المفتاح الكلمة ،Kbzwd تشغیل البرنامج من جدید، ثم كتبت
     
     

    وسأستخدم المفتاح الخاص بالتشفیر = 13 أیضاً،كي لا یتغیر خرج كلا البرنامجین: مشكلة : C++ 2. في لغة
    لغات البورلاند ( غیر الفجولیة ) ھو إفتقادنا الى الإخراج الزاھي الجمیل.
    لن یتعبني الكود وكتابتھ، ولكن ما سیؤلمني ھو النظر الى الإخراج السابق ( بلغة فیجوال بیسك) ومقارنتھ
    مع الإخراج الذي سیظھر لنا الآن:
    #include <iostream.h> // مكتبة الإدخال والإخراج
    #include <string.h> // strlen مكتبة لإستدعاء الدالة
    void main ()
    {
    char msg [ الرسالة المطلوب تشفیرھا // ;[ 20
    int key; // مفتاح التشفیر
    cout<<" Enter The Key \n";
    cin>> key; // إتفقنا على أن یكون 13
    cout<<" Enter The Message \n";
    cin>>msg; // Fowzi
    cout<< " Your Message after ciphering \n ";
    for ( int i=0; i<strlen(msg); i++)
    cout<< char( key ^ int(msg[i])); // Kbzwd
    }
    وھذا ھو ناتج البرنامج:
     
     
     
     
     
     
     
     
     
    هل اعجبك الموضوع :

    تعليقات