صفحة 1 من 3 123 الأخيرةالأخيرة
النتائج 1 إلى 10 من 22
الموضوع:

التشفير الثنائي الابدالي (Digraph Substitution Cipher)وبرمجة شفرة playfair

الزوار من محركات البحث: 757 المشاهدات : 4110 الردود: 21
الموضوع حصري
جميع روابطنا، مشاركاتنا، صورنا متاحة للزوار دون الحاجة إلى التسجيل ، الابلاغ عن انتهاك - Report a violation
  1. #1
    Software Developer
    Expert in Encryption
    تاريخ التسجيل: January-2010
    الدولة: البـــــصرة
    الجنس: ذكر
    المشاركات: 7,348 المواضيع: 422
    صوتيات: 7 سوالف عراقية: 0
    التقييم: 6778
    مزاجي: ****
    المهنة: مبرمج شركة Weir
    أكلتي المفضلة: ****
    موبايلي: ****
    آخر نشاط: 14/November/2022
    مقالات المدونة: 163

    Rose التشفير الثنائي الابدالي (Digraph Substitution Cipher)وبرمجة شفرة playfair

    مرحبا :
    التشفير الثنائي الابدالي Digraph Substitution Cipher :




    وهو احد طرق التشفير القديم الكلاسيكي المسمى بـ(تشفير الورقة والقلم) لامكانية تشفيره يدوياً على عكس التشفير الحديث , ان التشفير الثنائي شبيه بالتشفير الاحادي الابجدية ( شفرة القيصر , الشفرة الماسونية , شفرة الافاين ) لكن في هذه الطريقة يتم وضع احرف الرسالة المراد تشفيرها على شكل ازواج ثنائية (Digraph ) وبالتالي يتم استبداله بزوج اخر ( لذلك تعتبر طريقة ابدالية Substitution ) ويعتبر التشفير الثنائي اقوى من التشفير الاحادي (monoalphabetic cipher ) لعجز(او جعلها معقدة جداً) طريقة تحليل التكرار ( frequency analysis ) على كسر هذا النوع من الشفرات وهذا السبب الرئيسي في اكتشاف الشفرات متعددة الابجدية (polyalphabetic cipher) , مثال على هذا التشفير هو طريقة playfair .

    شفرة playfair للتشفير الثنائي :
    صممت هذه الشفرة سنة 1854 من قبل جارلس وتستون (Charles Wheatstone) لكنها تحمل اسم اللورد بلافير(Lord Playfair) الذي روج الى استخدامها (اضغط على اسم العالم للانتقال الى صفحته في الموسوعة الحرة )
    جارلس ونستون اللورد بلايفير
    سلاماً عليكم طبتم وطابت الارض التي فيها دفنتم
    --------------------------------------------------------------------------------------
    استخدمت هذه الشفرة في الاغراض العسكرية من قبل القوات البريطانية في معركة البوير الثانية و الحرب العالمية الاولى ومن قبل البريطانين و الاستراليين في الحرب العالمية الثانية .

    طريقة التشفير Encryption :

    اولا : يتم رسم مربع بوليبيوس مكون من خمس صفوف وخمس اعمدة ويحتوي العبارة المفتاحية ( key phrase ) بالاضافة الى حروف الابجدية المتبقية (بشرط عدم ورودها في العبارة المفتاحية ) وبما ان احرف اللغة الانكليزية عددها 26 وعدد خلايا المربع 25 خلية فيتم دمج حرفي (i,j) او يتم استبعاد الـ (q) لندرة استخدامها.

    ثانيا: نقسم النص الصريح الى ثنائيات ووضع حرفين مع بعضهما وبحسب الشروط :
    • اذا كانت الثنائيات مكونة من نفس الحرفين ( او تبقى حرف واحد في النهاية ) فيتم اضافة الحرف (x) بين الحروف المتشابهة او في النهاية
    • اذا وقع الحرفين في نفس الصف من المربع فيستبدل كل حرف بالحرف الواقع الى يمينه مباشرة (مع امكانية التدوير لليسار ان استوجب ذلك) .
    • اذا وقع الحرفين في نفس العمود من المربع فيستبدل كل حرف بالحرف الواقع اسفله مباشرة (مع امكانية التدوير للاعلى ان استوجب ذلك) .
    • ما عدا ذلك فيتم استبدال كل حرف بالحرف الواقع في نفس صفه وعمود الحرف الثاني .

    ملاحظة : يفضل استخدام عبارة مفتاحية طويلة للحصول على شفرة اقوى .

    طريقة فك التشفير Decryption :
    نفس طريقة التشفير كذلك نقوم بتقسيم النص الى ثنائيات والاختلاف في النقطتين ادناه فقط :
    • اذا وقع الحرفين في نفس الصف من المربع فيستبدل كل حرف بالحرف الواقع الى يساره مباشرة (مع امكانية التدوير لليمين ان استوجب ذلك) .
    • اذا وقع الحرفين في نفس العمود من المربع فيستبدل كل حرف بالحرف الواقع اعلاه مباشرة (مع امكانية التدوير للاسفل ان استوجب ذلك) .

    ادناه شرح بالفيديو لكيفية عمل التشفير وفك التشفير في شفرة البلايفير :


    الان نأتي الى برمجة الشفرة بلغة VB6 :
    تعتبر برمجة البلايفير صعبة جداً لكثرة الدوال المستخدمة فيها (توجد حلول كثيرة لكني افضل طريقة الدوال والبروسيجرات في الحلول )
    1. اضف ثلاث صناديق نصوص و زر امر واحد
    2. نقرة مزدوجة على زر الامر واكتب الكود الاتي :

    كود PHP:
    Dim t1 As String
    Dim t2 
    As String
    t1 
    Text1.Text
    t2 
    Text2.Text
    Text3
    .Text EncodePlayFair(t1t2
    3. الان اضف الكود ادناه في القسم العام (General)
    كود PHP:
    Option Explicit

    Public UndoTemp         As String

    Private numConv(10)     As Byte
    Private Plain           As Variant
    Private Code(28)        As String
    Private Square(36)      As String
    Private SquareCode(5)   As String
    Private Row()           As Integer
    Private PlaySquare      As String

    Public Function EncodePlayFair(ByVal PlainIn As StringByVal key As String)

    Dim i As Long
    Dim P1 
    As String
    Dim P2 
    As String
    Dim Bpos 
    As Long
    Dim tmpText 
    As String

    PlainIn 
    TrimText(PlainInTrueFalseFalseFalse)
    If 
    PlainIn "" Then Exit Function

    Bpos 1
    Do
      
        If 
    Mid(PlainInBpos1) = "J" Then Mid(PlainInBpos1) = "I"
        
    If Mid(PlainInBpos 11) = "J" Then Mid(PlainInBpos 11) = "I"
      
        
    If Mid(PlainInBpos1) <> Mid(PlainInBpos 11Then
          
            Bpos 
    Bpos 2
            
    Else
          
            
    PlainIn Left(PlainInBpos) & "X" Mid(PlainInBpos 1)
            
    Bpos Bpos 2
        End 
    If
    Loop While Bpos Len(PlainIn)

    If 
    Len(PlainInMod 2 <> 0 Then PlainIn PlainIn "X"

    key TrimText(keyTrueFalseFalseFalse)
    If 
    Len(key) < 2 Then
        MsgBox 
    "Key size too small"vbCritical
        
    Exit Function
        
    End If
    If 
    InitPlayFair(key) <> 0 Then Exit Function

    For 
    1 To Len(PlainInStep 2
        P1 
    Mid(PlainIni1)
        
    P2 Mid(PlainIn11)
        
    EncodePlayFair EncodePlayFair EncodeDigram(P1P2)
    Next
    End 
    Function
    Public Function 
    TrimText(TextIn As StringLetters As BooleanNumbers As BooleanSpaces As BooleanPoints As Boolean)
    Dim i As Long
    Dim tmp 
    As Byte
    For 1 To Len(TextIn)
        
    tmp Asc(UCase(Mid(TextIni1)))
        If 
    Letters True And (tmp 64 And tmp 123Then
            TrimText 
    TrimText Chr(tmp)
        ElseIf 
    Numbers True And (tmp 47 And tmp 58Then
            TrimText 
    TrimText Chr(tmp)
        ElseIf 
    Spaces True And tmp 32 Then
            TrimText 
    TrimText Chr(tmp)
        ElseIf 
    Points True And tmp 46 Then
            TrimText 
    TrimText Chr(tmp)
        
    End If
    Next
    End 
    Function

    Public Function 
    InitPlayFair(ByVal key As String) As Integer
    Dim i 
    As Integer
    Dim SQ 
    As String

    PlaySquare 
    ""
    For 1 To Len(key)
        
    SQ Mid(keyi1)
        If 
    InStr(1PlaySquareSQ) = And SQ <> "J" Then PlaySquare PlaySquare SQ
    Next

    For 1 To 26
        SQ 
    Chr(64)
        If 
    InStr(1PlaySquareSQ) = And SQ <> "J" Then PlaySquare PlaySquare SQ
    Next

    End 
    Function
    Private Function 
    EncodeDigram(ByVal P1 As StringByVal P2 As String) As String
    Dim X1 
    As Integer
    Dim Y1 
    As Integer
    Dim X2 
    As Integer
    Dim Y2 
    As Integer
    Dim tmpX 
    As Integer
    Dim tmpY 
    As Integer

    Call GetXY
    (P1X1Y1)
    Call GetXY(P2X2Y2)

    If 
    X1 X2 Then
        Y1 
    Y1 1: If Y1 4 Then Y1 Y1 5
        Y2 
    Y2 1: If Y2 4 Then Y2 Y2 5
    ElseIf Y1 Y2 Then
        X1 
    X1 1: If X1 4 Then X1 X1 5
        X2 
    X2 1: If X2 4 Then X2 X2 5
    Else
        
    tmpX X1
        tmpY 
    Y1
        X1 
    X2
        X2 
    tmpX
    End 
    If

    P1 GetXYchar(X1Y1)
    P2 GetXYchar(X2Y2)

    EncodeDigram P1 P2

    End 
    Function
    Private Function 
    GetXY(Pchar As StringAs IntegerAs Integer)
    Dim PosP As Integer

    PosP 
    InStr(1PlaySquarePchar) - 1
    Int(PosP 5)
    PosP - (5)

    End Function

    Private Function 
    GetXYchar(As IntegerAs Integer)
    GetXYchar Mid(PlaySquare, (5) + 11)
    End Function


    Public Function 
    TestKey(aKey As IntegerkeyNumbers As BooleankeySpace As BooleankeyPoint As Boolean) As Integer
    If aKey 64 And aKey 91 Then
        TestKey 
    aKey
    ElseIf aKey 96 And aKey 123 Then
        TestKey 
    aKey 32
    ElseIf (aKey 47 And aKey 58) And keyNumbers True Then
        TestKey 
    aKey
    ElseIf aKey 32 And keySpace True Then
        TestKey 
    aKey
    ElseIf aKey 46 And keyPoint True Then
        TestKey 
    aKey
    ElseIf aKey 32 Then
        TestKey 
    aKey
    Else
    TestKey 0
    End 
    If
    End Function

    Private 
    Sub text1_KeyPress(KeyAscii As Integer)

        
    KeyAscii TestKey(KeyAsciiFalseTrueFalse)
        If 
    KeyAscii Asc("J"Then KeyAscii Asc("I")

    End Sub 
    هذا الكود لدي في وحدة نمطية خاصة بالتشفير التقليدي و بعد ان اكمل دورة التشفير سأقوم بنشرها كاملة

    قمت بتشفير الكلمة "spyman" باستخدام الكلمة المفتاحية "ali" فكان الناتج هو "UNWOIK"

    اي شخص يواجه صعوبة بالكود يتفضل يسأل ويدلل

    اتمنى لكم الفائدة

  2. #2
    من أهل الدار
    قَـمِےر ٱلعَراق
    تاريخ التسجيل: August-2014
    الدولة: °•°في قلب اغلى الكون°•°
    الجنس: أنثى
    المشاركات: 29,825 المواضيع: 370
    التقييم: 16984
    مزاجي: من يقترب عليه تحمل جنون دلعي
    المهنة: مبرمجه
    أكلتي المفضلة: سوشي و فنكر
    موبايلي: honor
    مقالات المدونة: 19
    خرب دخت
    موضوع قيم جدا
    شكرا لك
    تحية ود

  3. #3
    الراقي
    العراقي راقي
    تاريخ التسجيل: November-2012
    الدولة: العراق
    الجنس: ذكر
    المشاركات: 14,732 المواضيع: 1,752
    صوتيات: 11 سوالف عراقية: 0
    التقييم: 6659
    مزاجي: دائم الضحك
    المهنة: موظف حكومي
    أكلتي المفضلة: الفواكه
    موبايلي: جلكسي Note4
    آخر نشاط: منذ 3 يوم
    تسلم spyman
    موضوع قيم
    شكرا جزيلا لك

  4. #4
    مدير المنتدى
    تاريخ التسجيل: January-2010
    الدولة: جهنم
    الجنس: أنثى
    المشاركات: 84,950 المواضيع: 10,518
    صوتيات: 15 سوالف عراقية: 13
    التقييم: 87294
    مزاجي: متفائلة
    المهنة: Sin trabajo
    أكلتي المفضلة: pizza
    موبايلي: M12
    آخر نشاط: منذ 19 دقيقة
    مقالات المدونة: 18
    مشكلة انه الواحد يستخدم موبايل ومايكدر ينصب فد لغة مثل ال VB6 مأساة حقيقية مو ؟چان هسه شفرت اسمي هههه ..
    مجهود رائع سباي عااشت ايدك مبدعنا

  5. #5
    Software Developer
    Expert in Encryption
    اقتباس المشاركة الأصلية كتبت بواسطة أغرد بهمس مشاهدة المشاركة
    خرب دخت
    موضوع قيم جدا
    شكرا لك
    تحية ود
    ههههههه البلايفير شوي اعقد من السابقات لكن تبقى جميلة
    اهلا وسهلا بوجودج

  6. #6
    Software Developer
    Expert in Encryption
    اقتباس المشاركة الأصلية كتبت بواسطة سعد العراقي راقي* مشاهدة المشاركة
    تسلم spyman
    موضوع قيم
    شكرا جزيلا لك
    حبيبي الغالي حياك الله

    منورني

  7. #7
    Software Developer
    Expert in Encryption
    اقتباس المشاركة الأصلية كتبت بواسطة Suzana مشاهدة المشاركة
    مشكلة انه الواحد يستخدم موبايل ومايكدر ينصب فد لغة مثل ال VB6 مأساة حقيقية مو ؟چان هسه شفرت اسمي هههه ..
    مجهود رائع سباي عااشت ايدك مبدعنا
    ههههههه دبري لابتوب معودة

    وهاي شفرة اسمج TQVCKI اذا كانت الكلمة المفتاحية ali بينما اذا كانت SUZANA رح يصير اسمج UZANSN

    منورة سوزانا

  8. #8
    مساعد المدير
    ام محمد
    تاريخ التسجيل: May-2014
    الدولة: روح إيليا وشمس الشموس
    الجنس: أنثى
    المشاركات: 61,938 المواضيع: 1,038
    صوتيات: 1 سوالف عراقية: 2
    التقييم: 121665
    مزاجي: I do not care about anyone
    المهنة: Graduate without appointment
    أكلتي المفضلة: دولمة
    موبايلي: iphone مال هسة +_-
    آخر نشاط: منذ ساعة واحدة
    مقالات المدونة: 19
    سلمت يمناك دكتورنا الوسيم

  9. #9
    من المشرفين القدامى
    Om alzoz
    تاريخ التسجيل: October-2016
    الدولة: البصرة
    الجنس: أنثى
    المشاركات: 9,140 المواضيع: 73
    صوتيات: 1 سوالف عراقية: 1
    التقييم: 7135
    مزاجي: برتقالي
    المهنة: طالبة صيدلة
    أكلتي المفضلة: الدولمة
    موبايلي: Iphone x &7plus
    آخر نشاط: 4/December/2018
    شكرا دكتور

  10. #10
    من المشرفين القدامى
    ALZOBADY
    تاريخ التسجيل: November-2013
    الدولة: العراق / بابل
    الجنس: ذكر
    المشاركات: 17,463 المواضيع: 1,770
    صوتيات: 8 سوالف عراقية: 0
    التقييم: 16663
    مزاجي: مطعج :4:
    المهنة: كاسب
    أكلتي المفضلة: الفاصوليا + البرياني
    موبايلي: Iphon 7 plus
    مقالات المدونة: 1
    تشكرات

صفحة 1 من 3 123 الأخيرةالأخيرة
تم تطوير موقع درر العراق بواسطة Samer

قوانين المنتديات العامة

Google+

متصفح Chrome هو الأفضل لتصفح الانترنت في الجوال