04-10-17, 11:12 AM
(آخر تعديل لهذه المشاركة : 04-10-17, 11:30 AM {2} بواسطة silverlight.)
الأسلوب الثامن:
Hashing & Unhashing
هذا الأسلوب تم توضيحه في الموضوع الموجود في اللينك التالي
Hash & Unhash
و هنا فقط اريد اضافة شئ بسيط لهذا الموضوع و هو كيفية استخدام كل من
Left Shift = (<<) و Right Shift = (>>)
مثال بسيط علي Left Shift = (<<)
الفكرة ببساطه هنا أننا تضرب الأسكي كود الخاص بأي حرف في القيمة 2 أس 16
أو بمعني أدق نضربها في 2 مرفوعة لأي أس و ليس 16 تحديدا
نفس الكود أعلاه يمكن كتابته كالأتي
و أيضا يمكن كتابته كالأتي
و لفك التشفيير
يتم استخدام Right Shift = (>>)
الفكرة ببساطه هنا أننا نقسم الرقم المشفر علي القيمة 2 أس 16
أيضا يمكن كتابة الكود بالشكل التالي
,وأيضا يمكن كتابة الكود كالتالي
حاول أن نقوم بتغيير الرقم 16 و هو هنا يمثل الأس
خاول تغييره الي اي رقم اخر اقل من 16 أو أكبر من 16
يجب فقط أن تضع في اعتبارك أن Integer له MaxValue و له MinValue
في الكود أعلاه قمت فقط بتوضيح كيفية تشفيير و فك التتشفيير لحرف واحد
حاول تتطبق الفكرة علي string لتري كيف يتم التشفيير و العكس
يمكن كتابة الكود أعلاه علي شكل دوال رياضية كالتالي
استخدام احدي الدالتين في التشفيير
وأيضا يمكن كتابة الكود علي هيئة كلاس كالتالي
Hashing & Unhashing
هذا الأسلوب تم توضيحه في الموضوع الموجود في اللينك التالي
Hash & Unhash
و هنا فقط اريد اضافة شئ بسيط لهذا الموضوع و هو كيفية استخدام كل من
Left Shift = (<<) و Right Shift = (>>)
مثال بسيط علي Left Shift = (<<)
PHP كود :
Dim chr As Char = "A"c
Dim x As Integer = AscW(chr)
x = x << 16
الفكرة ببساطه هنا أننا تضرب الأسكي كود الخاص بأي حرف في القيمة 2 أس 16
أو بمعني أدق نضربها في 2 مرفوعة لأي أس و ليس 16 تحديدا
نفس الكود أعلاه يمكن كتابته كالأتي
PHP كود :
Dim chr As Char = "A"c
Dim x As Integer = AscW(chr)
x = x * (2 ^ 16)
و أيضا يمكن كتابته كالأتي
PHP كود :
Dim chr As Char = "A"c
Dim x As Integer = AscW(chr)
x = x * Math.Pow(2, 16)
و لفك التشفيير
يتم استخدام Right Shift = (>>)
الفكرة ببساطه هنا أننا نقسم الرقم المشفر علي القيمة 2 أس 16
PHP كود :
Dim y As Integer = x
y = y >> 16
Dim result As Char = ChrW(y)
أيضا يمكن كتابة الكود بالشكل التالي
PHP كود :
Dim y As Integer = x
y = y / (2 ^ 16)
Dim result As Char = ChrW(y)
,وأيضا يمكن كتابة الكود كالتالي
PHP كود :
Dim y As Integer = x
y = y / Math.Pow(2, 16)
Dim result As Char = ChrW(y)
حاول أن نقوم بتغيير الرقم 16 و هو هنا يمثل الأس
خاول تغييره الي اي رقم اخر اقل من 16 أو أكبر من 16
يجب فقط أن تضع في اعتبارك أن Integer له MaxValue و له MinValue
في الكود أعلاه قمت فقط بتوضيح كيفية تشفيير و فك التتشفيير لحرف واحد
حاول تتطبق الفكرة علي string لتري كيف يتم التشفيير و العكس
يمكن كتابة الكود أعلاه علي شكل دوال رياضية كالتالي
PHP كود :
Private Function LeftShift(x As Integer, base As Integer, power As Integer) As Integer
Return (x * Math.Pow(base, power))
End Function
Private Function RightShift(x As Integer, base As Integer, power As Integer) As Integer
Return (x / Math.Pow(base, power))
End Function
استخدام احدي الدالتين في التشفيير
PHP كود :
Dim chr As Char = "A"c
Dim x As Integer = AscW(chr)
x = LeftShift(x, 8, 3)
وأيضا يمكن كتابة الكود علي هيئة كلاس كالتالي
PHP كود :
Public Class BitWise
Private value As Integer
Private base As Integer
Private power As Integer
Public Sub New(value As Integer, base As Integer, power As Integer)
Me.value = value
Me.base = base
Me.power = power
End Sub
Public ReadOnly Property Left As Integer
Get
Return (value * Math.Pow(base, power))
End Get
End Property
Public ReadOnly Property Right As Integer
Get
Return (value / Math.Pow(base, power))
End Get
End Property
End Class
Retired

