تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
التشفير وهم أم حقيقة
#11
الأسلوب التاسع:
استخدام الكلاسان  GZipStream Class و  DeflateStream Class
وهذان الكلاسان سوف تجدهم في فضاء الأسماء IO.Compression
ومن مميزات هذان الكلاسان انه يمكن استخدامهم في تشفيير ملف أو String أو أرقام....الخ
واسلول استخدام الكلاسان متشابه تماما
الفارق بينهم هو نتيجة التشفيير
حيث أن ناتج التشفيير في الكلاس DeflateStream أقل في طول مصفوفة البايت عن الكلاس GZipStream

الدوال التالية يمكن استخدامها في التشفيير و فك التشفيير

الدالة الأولي : التشفيير باستخدام GZipClass

PHP كود :
   Private Function Zip(bytes As Byte()) As Byte()
 
       Dim zipped As Byte() = Nothing
        Using ms 
As IO.MemoryStream = New IO.MemoryStream
            Using zs 
As IO.Compression.GZipStream = New IO.Compression.GZipStream(msIO.Compression.CompressionMode.Compress)
 
               zs.Write(bytes0bytes.Length)
 
           End Using
            zipped 
ms.ToArray()
 
       End Using
        Return zipped
    End 
Function 

الدالة الثانية: التشفيير بإستخدام DeflateStream


PHP كود :
   Private Function Compress(bytes As Byte()) As Byte()
 
       Dim compressed As Byte() = Nothing
        Using ms 
As IO.MemoryStream = New IO.MemoryStream
            Using ds 
As IO.Compression.DeflateStream = New IO.Compression.DeflateStream(msIO.Compression.CompressionMode.Compress)
 
               ds.Write(bytes0bytes.Length)
 
           End Using
            compressed 
ms.ToArray()
 
       End Using

        Return compressed
    End 
Function 

الدالة الثالثة: فك التشفيير باستخدام GZipStream

PHP كود :
   Private Function DeZip(bytes As Byte()) As Byte()
 
       Dim dezipped As Byte() = Nothing
        Using sw 
As IO.MemoryStream = New IO.MemoryStream()
 
           Using sr As IO.MemoryStream = New IO.MemoryStream(bytes)
 
               Using ds As IO.Compression.GZipStream = New IO.Compression.GZipStream(srIO.Compression.CompressionMode.Decompress)
 
                   ds.CopyTo(sw)
 
               End Using
            End Using
            deZipped 
sw.ToArray
        End Using
        Return dezipped
    End 
Function 

الدالة الرابعة: فك التشفيير بإستخدام DeflateStream

PHP كود :
   Private Function Decompress(bytes As Byte()) As Byte()
 
       Dim decompressed As Byte() = Nothing
        Using sw 
As IO.MemoryStream = New IO.MemoryStream()
 
           Using sr As IO.MemoryStream = New IO.MemoryStream(bytes)
 
               Using ds As IO.Compression.DeflateStream = New IO.Compression.DeflateStream(srIO.Compression.CompressionMode.Decompress)
 
                   ds.CopyTo(sw)
 
               End Using
            End Using
            decompressed 
sw.ToArray
        End Using
        Return decompressed
    End 
Function 

الإستخدام
مثال لتشفيير String
1- تعريف String
2- تحويل String الي مصفوفة بايت
3- تشفيير مصفوفة البايت
4- فك التشفيير عند الحاجة له

PHP كود :
       Dim s As String "visual basic"
 
       Dim values As Byte() = System.Text.Encoding.Unicode.GetBytes(s)

 
       Dim compressed As Byte() = Compress(values)
 
      
        Dim zipped 
As Byte() = Zip(values

فك التشفيير يتم بشكل عكسي
1- نمرر مصفوفة البايت المشفرة الي دالة فك التشفيير
2- ثم نحول الناتج الي String

PHP كود :
       Label4.Text System.Text.Encoding.Unicode.GetString(Decompress(compressed))
 
       Label5.Text System.Text.Encoding.Unicode.GetString(DeZip(zipped)) 

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

المراجع:
GZipStream Class
DeflateStream Class
Retired
الرد }}}
تم الشكر بواسطة: gharib , Aymanr3b , Aymanr3b



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


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