مقدمة عن التشفير الانتقالي Transposition Ciphers وبرمجة شفرة Railfence
يعتبر احد طرق التشفير القديمة classical ciphers , وتفترض هذه الطريقة بتغيير مواقع احرف الكلمة المراد تشفيرها , على سبيل المثال اريد ان اشفر كلمة spyman بطرق التشفير الانتقالي , فسوف تصبح SMPAYN , لو تلاحظ الكلمة المشفرة لم تأتي بحروف جديدة , وانما عدلت على مواقع الحروف القديمة فقط .
بعض طرق التشفير الانتقالي :
1- شفرة Railfence Transposition
2- شفرة Columnar Transposition
3- شفرة Route Transposition
4- myszkowski transposition cipher
5- permutation transposition cipher
6- anagramming jumbling words transposition cipher
7-combining monoalphabetic and simple transposition
بعض انواع التشفير الانتقالي لا تحتاج الى مفتاح (key) لذلك تسمى بطرق (Keyless Transposition) مثل شفرة railfence وشفرة الروت Route Transposition ,, لكن تحتوي شفرة الرّيل فينس على رقم تزحيف الاحرف وقد يعتبره البعض مفتاح .
شفرة Railfence :
تعتبر من الشفرات الانتقالية البسيطة , وتعني كلمة Railfence السياج وتسمى ايضاً Zigzag cipher , حيث تعمل هذه الطريقة عمل شبيه بتصميم الاسيجة القديمة ( او السكك الحديدية ) في الريف في اوربا و امريكا .
|
السياج Railfence ( لاحظ تقاطع الاخشاب ) |
عملية التشفير Encryption :
اذا اردنا تشفير كلمة في الـ Railfence فيجب ان نبعثر الاحرف على شكل اعمدة وبعد ذلك نقرأ الكلمة على شكل صفوف ,
مثال : شفر الكلمة (spyman) بأستخدم شفرة الـ Railfence . علماً ان عدد الصفوف 2
بعد ذلك تقرأ النص الناتج صف صف فتكون الكلمة الناتجة بعد التشفير SYAPMN
مثال اخر : شفر نفس الكلمة في المثال اعلاه مع تغير عدد الصفوف الى 3 .
ونقرأ النص الناتج صف صف فتكون الكلمة SAPMNYX
لاحظ ظهور حرف جديد ليس من اصل الكلمة وهو الحرف (X) وسبب ظهور هذا الحرف بسبب وجود فراغ في الشبكة (الجدول) لذلك نعوض عن هذا الفراغ بالحرف (X) وعند فك التشفير نقوم بحذفه .
مثال اخر : شفر نفس الكلمة في المثال السابق مع تغير عدد الصفوف الى 4 . (لاحظ في هذا المثال عدد (X ) التي سوف تنتج مع الكلمة المشفرة )
فتصبح الكلمة الناتجة SXPNXYAXMX
عملية فك التشفير Decryption :
عملية فك التشفير معاكسة لعملية التشفير , نقوم بوضع جدول ( بعد معرفة عدد الصفوف طبعاً ) ونقوم بترتيب الكلمة حسب عدد الصفوف .
مثال : قم بفك تشفير الكلمة التالية SAPMNYX اذا علمت ان عدد الصفوف 3 . بأستخدام شفرة Rail Fence .
فتصبح الكلمة الناتجة : spymanx وتحذف الاكس ,, وهكذا
كيفية برمجة شفرة Rail fence :
يتم برمجتها بعدة طرق و اغلب الطرق تعتمد على المصفوفات او على الـ Data Grid View لسهولة التنقل بين العناصر بالاعتماد على الـدليل Index الموجود في المصفوفة والـ Data Grid View . انا استخدمت طريقة المصفوفات الثنائية
ادناه برنامج لتشفير النص الواضح لاثنين من الصفوف :
كود PHP:
Dim a(100, 100) As String
x = Text1.Text
For i = 1 To Len(x)
cut = Mid(x, i, 1)
Select Case i
Case 1
a(0, 0) = cut
Case 2
a(1, 1) = cut
Case 3
a(2, 0) = cut
Case 4
a(3, 1) = cut
Case 5
a(4, 0) = cut
Case 6
a(5, 1) = cut
End Select
Next i
For i = 0 To 5
Text5.Text = Text5.Text & a(i, j)
Next i
j = j + 1
For i = 0 To 5
Text5.Text = Text5.Text & a(i, j)
Next i
اتمنى لكم التوفيق