الإرشادات التفصيلية: تشفير وفك تشفير السلاسل في Visual Basic

تُظهر هذه المعاينة كيفية استخدام الفئة DESCryptoServiceProvider للتشفير وفك التشفير السلاسل باستخدام موفر خدمة التشفير إصدار (CSP) خوارزمية مقياس تشفير البيانات الثلاثية TripleDES) . الخطوة الأولى لإنشاء فئة برنامج بسيطة تقوم بتغليف خوارزمية 3DES و تخزين البيانات المشفرة كسلسلة مرمزة أساس 64. ثم يتم استخدام ذلك البرنامج لتخزين بيانات المستخدم الخاصة بأمان في ملف نصي يمكن الوصول إليه بشكل عام.

يمكنك استخدام التشفير لحماية سرية مستخدم (على سبيل المثال، كلمات المرور) و لجعل بيانات اعتماد غير قابلة للقراءة بواسطة المستخدمين غير المخولين. يمكنه حماية هوية مستخدم مخوّل من السرقة الذي يحمي أصول المستخدم ويوفر منع الرفض. التشفير يمكن أيضاً أن تحمي بيانات المستخدم من أن يتم الوصول إليها من قبل المستخدمين غير المخولين.

لمزيد من المعلومات، راجع خدمات التشفير.

ملاحظة الأمانملاحظة الأمان

توفر خوارزميات Rijndael (يتم الإشارة إليه كـ "مقياس تشفير متقدم" [AES]) و "مقياس تشفير البيانات الثلاثي" (3DES) أماناً أكبر من DES لأنها أكثر تركيزاً حسابياً. للمزيد من المعلومات، راجع DES وRijndael.

لإنشاء برنامج تضمين التشفير

  1. أضف استيراد تشفير مساحة الاسم إلى بداية الملف.

    Imports System.Security.Cryptography
    
  2. إنشئ فئة لتغليف أساليب التشفير وفك التشفير.

    Public NotInheritable Class Simple3Des
    End Class
    
  3. أضف حقل خاصة لتخزين تشفير موفر الخدمة 3DES.

    Private TripleDes As New TripleDESCryptoServiceProvider
    
  4. أضف أسلوب خاص وذلك لإنشاء صفيف من البايت طوله محدد من تجزئة المفتاح المحدد.

    Private Function TruncateHash( 
        ByVal key As String, 
        ByVal length As Integer) As Byte()
    
        Dim sha1 As New SHA1CryptoServiceProvider
    
        ' Hash the key.
        Dim keyBytes() As Byte = 
            System.Text.Encoding.Unicode.GetBytes(key)
        Dim hash() As Byte = sha1.ComputeHash(keyBytes)
    
        ' Truncate or pad the hash.
        ReDim Preserve hash(length - 1)
        Return hash
    End Function
    
  5. أضف دالة انشائية لتهيئة تشفير موفر الخدمة 3DES.

    المعلمة key تتحكم في أساليب EncryptData و DecryptData .

    Sub New(ByVal key As String)
        ' Initialize the crypto provider.
        TripleDes.Key = TruncateHash(key, TripleDes.KeySize \ 8)
        TripleDes.IV = TruncateHash("", TripleDes.BlockSize \ 8)
    End Sub
    
  6. أضف أسلوب عمومي والتي تشفر السلسلة.

    Public Function EncryptData( 
        ByVal plaintext As String) As String
    
        ' Convert the plaintext string to a byte array.
        Dim plaintextBytes() As Byte = 
            System.Text.Encoding.Unicode.GetBytes(plaintext)
    
        ' Create the stream.
        Dim ms As New System.IO.MemoryStream
        ' Create the encoder to write to the stream.
        Dim encStream As New CryptoStream(ms, 
            TripleDes.CreateEncryptor(), 
            System.Security.Cryptography.CryptoStreamMode.Write)
    
        ' Use the crypto stream to write the byte array to the stream.
        encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
        encStream.FlushFinalBlock()
    
        ' Convert the encrypted stream to a printable string.
        Return Convert.ToBase64String(ms.ToArray)
    End Function
    
  7. أضف أسلوب عمومي والتي تشفر السلسلة.

    Public Function DecryptData( 
        ByVal encryptedtext As String) As String
    
        ' Convert the encrypted text string to a byte array.
        Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext)
    
        ' Create the stream.
        Dim ms As New System.IO.MemoryStream
        ' Create the decoder to write to the stream.
        Dim decStream As New CryptoStream(ms, 
            TripleDes.CreateDecryptor(), 
            System.Security.Cryptography.CryptoStreamMode.Write)
    
        ' Use the crypto stream to write the byte array to the stream.
        decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
        decStream.FlushFinalBlock()
    
        ' Convert the plaintext stream to a string.
        Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
    End Function
    

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

لاختبار تشفير برنامج التضمين

  1. أضف أسلوب الذي يستخدمه برنامج تضمين في فئة منفصلةEncryptData أسلوب يشفّر سلسلة والكتابة إليها على مجلد "مستندات" الخاص بالمستخدم.

    Sub TestEncoding()
        Dim plainText As String = InputBox("Enter the plain text:")
        Dim password As String = InputBox("Enter the password:")
    
        Dim wrapper As New Simple3Des(password)
        Dim cipherText As String = wrapper.EncryptData(plainText)
    
        MsgBox("The cipher text is: " & cipherText)
        My.Computer.FileSystem.WriteAllText( 
            My.Computer.FileSystem.SpecialDirectories.MyDocuments & 
            "\cipherText.txt", cipherText, False)
    End Sub
    
  2. أضف أسلوب التي تقرأ سلسلة المشفرة من مجلد مستندات الخاص بالمستخدم ثم يفك تشفير السلسلة مع التفاف أسلوب DecryptData .

    Sub TestDecoding()
        Dim cipherText As String = My.Computer.FileSystem.ReadAllText( 
            My.Computer.FileSystem.SpecialDirectories.MyDocuments & 
                "\cipherText.txt")
        Dim password As String = InputBox("Enter the password:")
        Dim wrapper As New Simple3Des(password)
    
        ' DecryptData throws if the wrong password is used.
        Try
            Dim plainText As String = wrapper.DecryptData(cipherText)
            MsgBox("The plain text is: " & plainText)
        Catch ex As System.Security.Cryptography.CryptographicException
            MsgBox("The data could not be decrypted with the password.")
        End Try
    End Sub
    
  3. أضف تعليمات برمجية لواجهة المستخدم للاتصال بأساليب TestEncoding و TestDecoding .

  4. قم بتشغيل التطبيق.

    عند اختبار التطبيق لاحظ أن ذلك لا يقوم بتشفير البيانات إذا قمت بتوفير كلمة مرور خاطئة.

راجع أيضًا:

المرجع

System.Security.Cryptography

DESCryptoServiceProvider

DES

TripleDES

Rijndael

المبادئ

خدمات التشفير