التنبيهات التالية ظهرت :
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 864 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 864 errorHandler->error



تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
التشفيير في إتجاه واحد
#1
السلام عليكم ورحمة الله وبركاته


التشفير موضوع هام جدا و هناك أساليب كثيرة لتشفير البيانات وحفظها في ملفات
والتشفير في إتجاه واحد هو واحدا من أساليب التشفير الهامة و تكمن فكرته في أننا تقوم بتشفير البيانات ولكننا لا نستطيع ان تعيد البيانات مرة أخري إلي حروفها الأصلية
وهنا قد يتساءل البعض و ما الهدف و كيف نستفيد من هذا الأمر؟

عموما و لمزيد من الإطلاع يوجد في موقع مايكروسوفت مثالا للتشفير في إتجاه واحد باستخدام  MD5 - HashAlgorithm و المثال الخاص بمايكروسوفت بسيط و سهل جدا ويوضح كيفية التشفير و التأكد من التشفير

ما الهدف من التشفير في إتجاه واحد؟
الأمر متروك غالبا لرؤية المبرمج في كيفية استخدام هذا النوع من التشفير لكن أهم أهداف التشفير في إتجاه واحد هو تشفيير كلمات السر التي تستخدم غالبا للدخول الي المواقع الإلكترونية او التي تستخدم في الدخول الي برنامج او إلي قاعدة بيانات تم حمايتها بكلمة سر معينة

و في هذا الموضوع لن نستخدم المثال الخاص بمايكروسوفت بل سوف نوضح كيفية التشفير في إتجاه واحد باستخدام انواع مختلفة من HashAlgorithm ثم نتأكد أن التشفير يعمل بشكل جيد

فكرة التشفير في إتجاه واحد تكمن في الخطوات التالية:
1- تحويل String الي Byte Array
2- نقوم بحساب Hash لهذه Byte Array و ذلك باستخدام واحدا من HashAlgorithm الموجودة في فضاء الأسماء System.Security.Cryptography و الناتج سيكون عبارة عن Byte Array أيضا
3- ثم أخيرا نقوم بتحويل العناصر و التي هي عبارة عن numeric value و الموجودة في تلك Byte Array  إلي ما يكافئها من Hexadecimal String أي ان الناتج النهائي هو عبارة عن Hexadecimal String


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


الكلاس التالي يمكن استخدامه في تشفيير كلمات السر أو في تشفير اي كلمة معينة ثم نتأكد لاحقا من أن كلمة السر صحيحة


PHP كود :
Imports System.Security.Cryptography
Imports System
.Text

Public Class Hasher

    Private 
Const hashLength As Integer 8
    Private internalHasher 
As HashAlgorithm

    Private Property Algorithm 
As HashAlgorithm
        Get
            Dim hasher 
As HashAlgorithm internalHasher
            If hasher Is Nothing Then
                hasher 
= New SHA512Managed
                Algorithm 
hasher
            End 
If
 
           Return hasher
        End Get
        Set
(value As HashAlgorithm)
 
           internalHasher value
        End Set
    End Property

    Public 
Function Verify(input As Stringhash As String) As Boolean
        Return VerifyHash
(Encoding.UTF8.GetBytes(input), Encoding.UTF8.GetBytes(hash))
 
   End Function

 
   Private Function VerifyHash(a() As Byteb() As Byte) As Boolean
        Dim length 
As Integer a.Length Xor b.Length
        Dim i 
As Integer 0
        While i 
a.Length AndAlso i b.Length
            length 
length Or a(i) Xor b(i)
 
           i += 1
        End 
While
 
       Return length 0
    End 
Function

 
   Public Function Hash(input As String) As String
        Return Hash
(Algorithminput)
 
   End Function

 
   Private Function Hash(provider As SHA512Managedinput As String) As String
        Dim data 
As Byte() = provider.ComputeHash(Encoding.UTF8.GetBytes(input))

 
       For i As Integer hashLength To data.Length 1 Step hashLength
            For j 
As Integer 0 To hashLength 1
                data
(j) = (data(j) Xor data(i))
 
           Next
        Next
        Return BitConverter
.ToString(data0hashLength).Replace("-"String.Empty)

 
   End Function

End Class 

في المرفقات ستجدون فكرة لكيفية الاستفادة من الكلاس و مثالا لكيفية استخدامه


المصادر:

Encoding.GetBytes

HashAlgorithm.ComputeHash

BitConverter.ToString

SHA512Managed Class


الملفات المرفقة
.rar   Test_OneWayHash.rar (الحجم : 60.01 ك ب / التحميلات : 163)
الرد }}}
تم الشكر بواسطة: myalsailamy , Adrees , asemshahen5 , الماجيك مسعد


الردود في هذا الموضوع
التشفيير في إتجاه واحد - بواسطة silverlight - 14-03-16, 09:49 AM
RE: التشفيير في إتجاه واحد - بواسطة CLARO - 15-05-16, 05:01 PM
RE: التشفيير في إتجاه واحد - بواسطة egbest2 - 29-05-19, 10:33 PM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم