27-09-17, 12:15 PM
(آخر تعديل لهذه المشاركة : 27-09-17, 01:26 PM {2} بواسطة silverlight.)
الأسلوب الخامس :
إستخدام ReverseString
هذا الأسلوب ربما يكون أحد الأساليب البسيطة التي لا تحتاج الي مهارة برمجية كبيرة
الفكرة تنحصر أنك تأخذ التكست المراد تشفييرة ثم تقوم بعمل Reverse له او تعكسه
ثم تقوم بتحويل كل حرف في هذا التكست الي بايت أو بمعني أدق تقوم بتحويل االحروف الي مصفوفة بايت
ولكي تفك التشفير فقط تقوم بتحويل مصفوفة البايت الي String ثم تعكس المدخلات الي اصلها
الدالة التالية تقوم بتحويل اي String إلي String معكوسه حروفه
مثال:
التشفيير
فك التشفيير
طبعا هنا عندما قمت بالتشفيير استخدمت System.Text.Encoding لتحويل string الي مصفوفة بايت
ثم و عند فك التشفيير قمت بتحويل مصفوفة البايت الي String مرة أخري بنفس الأسلوب
طريقة أخري :
أحيانا بعض المبرمجين لا يرغبون في الإعتماد علي الدوال الموجودة في الدوت نت
و هنا علي المبرمج أن يكتب الدوال الخاصة بالتشفيير و فك التشفيير بنفسه
و الأكواد التالية توضح كيف تكتب الكود كاملا بنفسك
ملحوظة :
دالة التشفيير هنا تقوم بتحويل كل حرف الي رقم
وبالتأكيد يمكن للقارئ تحويل الارقام الي بايت
باستخدام الكود الموجود في اللينك التالي
Convert structure to byteArray & viceversa
أيضا علي المبرمج أن لاينسي انه يتعامل مع Char وبالتالي فإن التحويل الي مصفوفة بايت من الحروف الانجليزية يختلف كليا عن تحويل الحروف العربية الي مصفوفة بايت
الإستخدام
التشفيير و فك التشفيير
طريقة أخري :
حيث هنا نقوم بتحويل String الي مصفوفة بايت باستخدام System.Text.Encoding
ثم نقوم بعكس مصفوفة البايت باستخدام الدالة التالية
وحين نريد فك التشفيير
نقوم بعكس مصفوفة البايت
ثم نستخدم System.Text.Encoding في إعادة المصفوفة الي String
إستخدام ReverseString
هذا الأسلوب ربما يكون أحد الأساليب البسيطة التي لا تحتاج الي مهارة برمجية كبيرة
الفكرة تنحصر أنك تأخذ التكست المراد تشفييرة ثم تقوم بعمل Reverse له او تعكسه
ثم تقوم بتحويل كل حرف في هذا التكست الي بايت أو بمعني أدق تقوم بتحويل االحروف الي مصفوفة بايت
ولكي تفك التشفير فقط تقوم بتحويل مصفوفة البايت الي String ثم تعكس المدخلات الي اصلها
الدالة التالية تقوم بتحويل اي String إلي String معكوسه حروفه
PHP كود :
Private Function ReversString(s As String) As String
Dim result As String = ""
Dim count As Integer = If(Not String.IsNullOrEmpty(s), 1, 0)
If count > 0 Then
For i = 0 To s.Length - 1
result += s(s.Length - i - 1)
Next
End If
Return result
End Function
مثال:
التشفيير
PHP كود :
Dim s As String = ReversString("Visual Basic")
Dim bytes As Byte() = System.Text.Encoding.Unicode.GetBytes(s)
فك التشفيير
PHP كود :
Dim decrypted As String = ReversString(System.Text.Encoding.Unicode.GetString(bytes))
Me.Text = decrypted
طبعا هنا عندما قمت بالتشفيير استخدمت System.Text.Encoding لتحويل string الي مصفوفة بايت
ثم و عند فك التشفيير قمت بتحويل مصفوفة البايت الي String مرة أخري بنفس الأسلوب
طريقة أخري :
أحيانا بعض المبرمجين لا يرغبون في الإعتماد علي الدوال الموجودة في الدوت نت
و هنا علي المبرمج أن يكتب الدوال الخاصة بالتشفيير و فك التشفيير بنفسه
و الأكواد التالية توضح كيف تكتب الكود كاملا بنفسك
ملحوظة :
دالة التشفيير هنا تقوم بتحويل كل حرف الي رقم
وبالتأكيد يمكن للقارئ تحويل الارقام الي بايت
باستخدام الكود الموجود في اللينك التالي
Convert structure to byteArray & viceversa
أيضا علي المبرمج أن لاينسي انه يتعامل مع Char وبالتالي فإن التحويل الي مصفوفة بايت من الحروف الانجليزية يختلف كليا عن تحويل الحروف العربية الي مصفوفة بايت
PHP كود :
Private Function EncryptReversedString(s As String) As String
Dim reversed As String = ReversString(s)
Dim result As String = ""
Dim count As Integer = If(Not String.IsNullOrEmpty(reversed), 1, 0)
If count > 0 Then
Dim i As Integer = 0
While i < reversed.Length
Dim chr As Char = reversed(i)
result += AscW(chr.ToString).ToString
result += " "c
i += 1
End While
End If
Return result.TrimEnd(" "c)
End Function
Private Function DecryptReversedString(s As String) As String
Dim result As String = ""
Dim count As Integer = If(Not String.IsNullOrEmpty(s), 1, 0)
If count > 0 Then
Dim values As String() = s.Split(" "c)
Dim i As Integer = 0
While i < values.Length
Dim current As String = values(i)
Dim chr As Char = ChrW(CInt(current))
result += chr.ToString
i += 1
End While
End If
Return Me.ReversString(result)
End Function
الإستخدام
التشفيير و فك التشفيير
PHP كود :
Dim s As String = ReversString("فيجوال بيسك")
Dim encrypted As String = EncryptReversedString(s)
Dim decrypted As String = Me.DecryptReversedString(encrypted)
Me.Text = ReversString(decrypted)
طريقة أخري :
حيث هنا نقوم بتحويل String الي مصفوفة بايت باستخدام System.Text.Encoding
PHP كود :
Dim s As String = "visual basic"
Dim bytes As Byte() = System.Text.Encoding.Unicode.GetBytes(s)
ثم نقوم بعكس مصفوفة البايت باستخدام الدالة التالية
PHP كود :
Private Function Revert(values As Byte()) As Byte()
Dim result As Byte() = New Byte(values.Length - 1) {}
For i = 0 To values.Length - 1
result(i) = values(values.Length - i - 1)
Next
Return result
End Function
PHP كود :
Dim reversed As Byte() = Revert(bytes)
وحين نريد فك التشفيير
نقوم بعكس مصفوفة البايت
PHP كود :
Dim reReversed As Byte() = Revert(reversed)
ثم نستخدم System.Text.Encoding في إعادة المصفوفة الي String
PHP كود :
Dim result As String = System.Text.Encoding.Unicode.GetString(reReversed)
Me.Text = result
Retired

