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

تحويل البيانات الي Base64String و العكس

وهنا التشفيير يتم بواسطة تحويل المدخلات الي مصفوفة بايت ياستخدام System.Text.Encoding ثم و باستخدام Convert Class يتم تحويل البيانات الي Base64String

ثم و لكي تفك التشفيير يتم تحويل Base64String الي مصفوفة بايت ثم و تأخذ مصفوفة البايت و تقوم بتحويلها الي اصلها باستخدم Encoding

الكلاس التالي يوضح الفكرة


PHP كود :
Public Interface IEncoder
        Function EncodeString
() As String
    End 
Interface

Public Interface 
IDecoder
    Function DecodeString
() As String
End 
Interface

Public 
NotInheritable Class EncodeDecodeString

    Public Shared 
Function Encode(As String) As IEncoder
        Return 
New EncoderDecoder(s)
 
   End Function

 
   Public Shared Function Decode(As String) As IDecoder
        Return 
New EncoderDecoder(s)
 
   End Function

 
   Private Class EncoderDecoder
        Implements IDecoder
IEncoder

        Private _source 
As String
        Private _length 
As Integer

        Public Sub 
New(source As String)
 
           Me._source source
            Me
._length = If(source IsNot Nothing10)
 
       End Sub

        Public 
Function DecodeString() As String Implements IDecoder.DecodeString
            Dim result 
As String ""
 
           If _length 0 Then
                Dim bytes 
As Byte() = System.Convert.FromBase64String(_source)
 
               result += System.Text.Encoding.Unicode.GetString(bytes)
 
           End If
 
           Return result
        End 
Function

 
       Public Function EncodeString() As String Implements IEncoder.EncodeString
            Dim result 
As String ""
 
           If _length 0 Then
                Dim bytes 
As Byte() = System.Text.Encoding.Unicode.GetBytes(_source)
 
               result += System.Convert.ToBase64String(bytes)
 
           End If
 
           Return result
        End 
Function
 
   End Class

End Class 

طبعا كل الاكواد موجودة علي النت فقط لقد قمت بكتابة الكود علي هيئة كلاس
لكن وعلي المبرمج إن أراد استخدام أكواد يستخدمها الجميع تقريبا
هنا علي المبرمج ن يكون مخادعا قليلا و يكتب الكود بأسلوب لا يفهمه إلا القليل من المبرمجين
مثلا الكلاس به خدعة بسيطة جدا
وهي أن Constructor الخاص بالكلاس يقبل String سواء كانت المدخلات تم تشفيرها أو لم يتم تشفييرها

الإستخدام

PHP كود :
       Dim encoder As IEncoder EncodeDecodeString.Encode("visual Basic")
 
       If encoder IsNot Nothing Then
            Me
.Label1.Text encoder.EncodeString
        End 
If

 
       Dim decoder As IDecoder EncodeDecodeString.Decode(Label1.Text)
 
       If decoder IsNot Nothing Then
            Me
.Label2.Text decoder.DecodeString
        End 
If 


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


PHP كود :
Public Interface IEncryptionAccessor

    Function EncryptString
() As String

    Function DecryptedString
() As String

End 
Interface

Public Class 
EncryptionAccessor
    Implements IEncryptionAccessor

    Private _key 
As String
    Private _source 
As String
    Private DefaultAccess 
As AccessorCallback
    Private DefaultEncrptiontAccess 
As AccessorEncryptionCallback

    Public Sub 
New(key As Stringsource As String)
 
       Me._key key
        Me
._source source
        DefaultAccess 
= New AccessorCallback(AddressOf ProvideAccess)
 
       DefaultEncrptiontAccess = New AccessorEncryptionCallback(AddressOf ProvideAccess)
 
   End Sub

    Public 
Function DecryptedString() As String Implements IEncryptionAccessor.DecryptedString
        Dim encoder 
As UTF8Encoding = New UTF8Encoding()
 
       Dim provider As TripleDESCryptoServiceProvider Nothing
        Dim service 
As MD5CryptoServiceProvider DefaultEncrptiontAccess.Invoke(encoder_keyprovider)
 
       Dim buffer As Byte() = Convert.FromBase64String(Me._source)
 
       Dim bytes As Byte() = Nothing
        Try
            Dim transform 
As ICryptoTransform provider.CreateDecryptor()
 
           bytes transform.TransformFinalBlock(buffer0buffer.Length)

 
       Catch ex As Exception
        Finally
            service
.Clear()
 
           provider.Clear()
 
       End Try
 
       Return encoder.GetString(bytes)
 
   End Function

 
   Public Function EncryptString() As String Implements IEncryptionAccessor.EncryptString

        Dim encoder 
As UTF8Encoding = New UTF8Encoding()
 
       Dim provider As TripleDESCryptoServiceProvider Nothing
        Dim service 
As MD5CryptoServiceProvider DefaultEncrptiontAccess.Invoke(encoder_keyprovider)
 
       Dim buffer As Byte() = encoder.GetBytes(_source)
 
       Dim bytes As Byte() = Nothing
        Try
            Dim transform 
As ICryptoTransform provider.CreateEncryptor()
 
           bytes transform.TransformFinalBlock(buffer0buffer.Length)
 
       Catch ex As Exception
        Finally
            service
.Clear()
 
           provider.Clear()
 
       End Try
 
       Return Convert.ToBase64String(bytes)
 
   End Function

 
   Private Function ProvideAccess(encoder As Encodingkey As String,
 
                                       ByRef service As MD5CryptoServiceProviderByRef provider As TripleDESCryptoServiceProvider) As Integer
        Dim result 
As Integer 0
        service 
Nothing
        provider 
Nothing
        If Not String
.IsNullOrEmpty(keyThen
            service 
= New MD5CryptoServiceProvider()
 
           Dim bytes As Byte() = service.ComputeHash(encoder.GetBytes(key))
 
           provider = New TripleDESCryptoServiceProvider() With {.Key bytes, .Mode CipherMode.ECB, .Padding PaddingMode.PKCS7}
 
           result result 1
        End 
If
 
       Return result
    End 
Function

 
   Private Function ProvideAccess(encoder As Encodingkey As String,
 
                                   ByRef provider As TripleDESCryptoServiceProvider) As MD5CryptoServiceProvider
        Dim service 
As MD5CryptoServiceProvider Nothing
        If DefaultAccess
.Invoke(encoderkeyserviceprovider) > 0 Then
            Return service
        End 
If
 
       Return Nothing
    End 
Function

 
   Friend Delegate Function AccessorCallback(encoder As Encodingkey As StringByRef service As MD5CryptoServiceProviderByRef provider As TripleDESCryptoServiceProvider) As Integer
    Friend Delegate 
Function AccessorEncryptionCallback(encoder As Encodingkey As StringByRef provider As TripleDESCryptoServiceProvider) As MD5CryptoServiceProvider


End 
Class 

الإستخدام

PHP كود :
       Dim key As String "123456"
 
       Dim cryptor As IEncryptionAccessor = New EncryptionAccessor(key"Visual Basic")
 
       Dim encrypted As String cryptor.EncryptString

        Dim decryptor 
As IEncryptionAccessor = New EncryptionAccessor(keyencrypted)
 
       Me.Text decryptor.DecryptedString 
Retired
الرد }}}


الردود في هذا الموضوع
التشفير وهم أم حقيقة - بواسطة silverlight - 21-09-17, 01:59 PM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 26-09-17, 01:42 PM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 27-09-17, 12:15 PM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 27-09-17, 04:35 PM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 30-09-17, 11:59 AM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 30-09-17, 02:22 PM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 01-10-17, 02:12 PM
RE: التشفير وهم أم حقيقة - بواسطة sendbad100 - 02-10-17, 03:10 PM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 04-10-17, 11:12 AM
RE: التشفير وهم أم حقيقة - بواسطة silverlight - 18-10-17, 10:49 AM


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


يقوم بقرائة الموضوع: