04-07-17, 11:04 AM
(آخر تعديل لهذه المشاركة : 16-07-17, 08:12 AM {2} بواسطة silverlight.)
مقدمة
Hash في مفهومه البسيط هو أن تأخذ أي رقم يكون عبارة عن Integer ثم تقوم بإجراء بعض العمليات الحسابية عليه و تشترجع رقم مختلف عن الرقم الأصلي
و غالبا يمكن إعتباره نوع من التشفير باستخدام عمليات حسابية بسيطة أو معقدة
Unhash هو عملية عكسية تماما و أيضا مفهومه البسيط هو أن تأخذ الرقم الناتج من Hash و تقوم بإجراء نفس العمليات الحسابية عليه و لكن بشكل عكسي تماما و في النهاية تحصل علي الرقم الأصلي الذي تم استخدامه في عمليه Hash و بعض الناس يحلو لهم أن يطلقوا علي هذا Reverse Engineering أو الهندسة العكسية
وغالبا يمكن إعتباره نوع من فك للتشفير
في واقع الأمر علي كل مبرمج أن يتفهم أن التشفير و فك التشفير عملية في غاية الخطورة
و الخطورة في هذا الأمر هي أن يستطيع اي شخص الحصول علي كيفية تشفير الرقم ومن ثم يستطيع أن يفك التشفير عن أي شئ أنت قمت بتشفيره
وبدون الدخول في كلام نظري لنضع بعض الأمثلة لتوضيح الفكرة
المثال الأول:
تشفير الرقم
المثال الثاني
فك التشفير عن الرقم
المثال الثاني
لنكتب اي دالتان أحدهما تقوم بعمليات حسابية بسيطة علي اي رقم
و نكتب الدالة العكسية لها
و الكود سيكون شئ من هذا القبيل
قبل أن نكتب اي كود أخر لنسأل أنفسنا
أين الخطورة في الفكرة
فهي مجرد معادلات رياضية او حسابية بسيطة
لننظر للأمر من وجهة نظر أخري
الحروف الأبجدية Char المستخدمة في البرمجة بشكل عام هي عبارة عن أرقام
و المثال التالي سيوضح لك كيفية الحصول علي Char تم نشفيره
و سوف أستخدم الدالتان أعلاه لتوضيح الأمر
أولا: تشفير اي حرف أبجدي
ثانيا فك التشفير عن الحرف الأبجدي
الخلاصة من هذا الموضوع هو أنك يجب أن تكون حذرا عند تشفير باسوورد أو اي String و لا تترك فرصة لأحد أن يسرق بياناتك
أتمني ان يكون الموضوع مفيدا للبعض منكم
Hash في مفهومه البسيط هو أن تأخذ أي رقم يكون عبارة عن Integer ثم تقوم بإجراء بعض العمليات الحسابية عليه و تشترجع رقم مختلف عن الرقم الأصلي
و غالبا يمكن إعتباره نوع من التشفير باستخدام عمليات حسابية بسيطة أو معقدة
Unhash هو عملية عكسية تماما و أيضا مفهومه البسيط هو أن تأخذ الرقم الناتج من Hash و تقوم بإجراء نفس العمليات الحسابية عليه و لكن بشكل عكسي تماما و في النهاية تحصل علي الرقم الأصلي الذي تم استخدامه في عمليه Hash و بعض الناس يحلو لهم أن يطلقوا علي هذا Reverse Engineering أو الهندسة العكسية
وغالبا يمكن إعتباره نوع من فك للتشفير
في واقع الأمر علي كل مبرمج أن يتفهم أن التشفير و فك التشفير عملية في غاية الخطورة
و الخطورة في هذا الأمر هي أن يستطيع اي شخص الحصول علي كيفية تشفير الرقم ومن ثم يستطيع أن يفك التشفير عن أي شئ أنت قمت بتشفيره
وبدون الدخول في كلام نظري لنضع بعض الأمثلة لتوضيح الفكرة
المثال الأول:
تشفير الرقم
PHP كود :
' تعريف المتغير الرقمي
Dim x As Integer = 3487
' إجراء بعض العمليات الحسابية علي هذا الرقم
' نضيف له اي قيمة أخري و لتكن 256
x = x + 256
' نضرب الناتج في اي رقم وليكن 8
x = x * 8
' نطرح منه اي رقم و ليكن 20
x = x - 20
المثال الثاني
فك التشفير عن الرقم
PHP كود :
' هذا المتغير يعبر عن القيمة الناتجة من عملية التشفير
Dim result As Integer = x
' فقط نقوم بعكس العمليات الحسابي
' نضيف له الرقم الذي تم طرحه وهو 20
result = result + 20
' نقسمه علي الرقم و هو 8
result = result / 8
' أخيرا نطرح منه الرقمو هو 256
result = result - 256
' الناتج من هذه العمليات الحسابية العكسية
' سيكون هو نفس الرقم الأصلي
المثال الثاني
لنكتب اي دالتان أحدهما تقوم بعمليات حسابية بسيطة علي اي رقم
و نكتب الدالة العكسية لها
و الكود سيكون شئ من هذا القبيل
PHP كود :
Private Function Hash(x As Integer) As Integer
x = x + 1050
x = x * x
x = x * 4
x = x - 10
Return x
End Function
Private Function UnHash(x As Integer) As Integer
x = x + 10
x = x / 4
x = Math.Sqrt(x)
x = x - 1050
Return x
End Function
قبل أن نكتب اي كود أخر لنسأل أنفسنا
أين الخطورة في الفكرة
فهي مجرد معادلات رياضية او حسابية بسيطة
لننظر للأمر من وجهة نظر أخري
الحروف الأبجدية Char المستخدمة في البرمجة بشكل عام هي عبارة عن أرقام
و المثال التالي سيوضح لك كيفية الحصول علي Char تم نشفيره
و سوف أستخدم الدالتان أعلاه لتوضيح الأمر
أولا: تشفير اي حرف أبجدي
PHP كود :
' لنفترض أن لدينا حرف أبجدي
Dim chr As Char = "A"c
' الان لنقوم بتشفير هذا الحرف
' اولا نقوم بتحويل الحرف الي رقم
Dim chrInteger As Integer = Asc(chr)
' ثانيا نقوم بتشفير الرقم
Dim hashed As Integer = Hash(chrInteger)
' لنعرض الرقم الناتج من عملية التشفير علي الفورم
Label1.Text = hashed
ثانيا فك التشفير عن الحرف الأبجدي
PHP كود :
' عملية فك التشفير
' ناخذ الرقم الناتج من عملية التشفير
Dim hashedInteger As Integer = CInt(Label1.Text)
' نفك التشفير عن هذا الرقم
Dim unhased As Integer = UnHash(hashedInteger)
' نقوم بتحويل الرقم الي حرف مرة أخري
Dim resultChar As Char = ChrW(unhased)
' لنعرض الحرف علي الفورم
Label2.Text = resultChar.ToString
الخلاصة من هذا الموضوع هو أنك يجب أن تكون حذرا عند تشفير باسوورد أو اي String و لا تترك فرصة لأحد أن يسرق بياناتك
أتمني ان يكون الموضوع مفيدا للبعض منكم