أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية لتشفير وفك تشفير ملف باستخدام Visual Basic .NET أو Visual Basic 2005

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

اضغط هنا لرابط المقالة باللغة الانجليزية301070
للحصول على إصدار Microsoft Visual C# .NET من هذه المقالة، راجع 307010.
يشير هذه المقالة التالية Microsoft .NET Framework مكتبة الفئات مساحات الأسماء:
  • System.IO
  • System.Security
  • System.Security.Cryptography

في هذه المهمة

الموجز
توضح هذه المقالة كيفية استخدام فئات التشفير التي يتم توفيرها من قبل Microsoft .NET Framework. يمكنك استخدام الفئات التشفير لتشفير ملف نصي إلى حالة غير قابل للقراءة. ثم يمكن فك تشفير الملف النص إلى تنسيقها الأصلي.

back to the top

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة و حزم الخدمات التي يجب أن يكون لديك:
  • Microsoft Windows XP أو Microsoft Windows Server 2003 Microsoft Windows 2000 Professional Microsoft Windows 2000 Server Microsoft Windows 2000 Server، متقدمة أو Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio .NET أو Microsoft Visual Studio 2005
back to the top

استخدام تشفير و إلغاء التشفير

يوفر مساحة الاسم System.Security.Cryptographic في .NET Framework مجموعة متنوعة من الأدوات للمساعدة في التشفير وفي فك التشفير. فئة CryptoStream هي واحدة من العديد من الفئات التي يتم توفيرها. تم تصميم الفئة CryptoStream تشفير أو فك تشفير محتوى كما دفق المحتوى الخروج إلى ملف.

لتشفير ملف اتبع الخطوات التالية:
  1. برنامج تشغيل Visual Studio .NET أو Visual Studio 2005.
  2. إنشاء تطبيق وحدة تحكم جديد في Visual Basic .NET أو في Visual Basic 2005. يتم إنشاء وحدة نمطية لك، مع إجراء Main() فارغ.
  3. استخدم العبارة عمليات الاستيراد حول من مساحة الاسم النظام مساحة الاسم System.Security مساحة الاسم System.Security.Cryptography مساحة الاسم System.Text مساحة الاسم System.IO. يجب إجراء ذلك بحيث لا يلزم تأهيل التعريفات من مساحات الأسماء هذه فيما بعد في التعليمات البرمجية الخاصة بك. يجب استخدام هذه العبارات قبل أي التعريفات الأخرى.
    Imports SystemImports System.IOImports System.SecurityImports System.Security.CryptographyImports System.Runtime.InteropServicesImports System.Text					
  4. إنشاء مفتاح سري تشفير فك تشفير البيانات. فئة DESCryptoServiceProvider يستند إلى خوارزمية تشفير المتناظر. يتطلب تشفير متماثل والمفتاح خط متجه تهيئة (IV) لتشفير البيانات. لفك تشفير البيانات ، يجب أن يكون لديك نفس مفتاح و IV نفس. يجب عليك أيضاً استخدام خوارزمية تشفير نفس. يمكنك إنشاء المفاتيح باستخدام أي من الطرق التالية:
    • الأسلوب 1 يمكنك مطالبة المستخدم بكلمة مرور. ثم، استخدم كلمة المرور المفتاح و IV.
    • الأسلوب 2 عند إنشاء مثيل جديد من فئات التشفير المتناظر يتم تلقائياً إنشاء مفتاح جديد و IV جديدة من أجل جلسة العمل. يمكن استخدام المفتاح IV التي تم إنشاؤها بواسطة المدارة المتماثل التشفير الفئات لتشفير و لفك تشفير الملف.

      للحصول على مزيد من المعلومات حول كيفية إنشاء توزيع مفاتيح بزيارة موقع Microsoft التالي على الويب أو راجع وثائق مجموعة أدوات (SDK) تطوير برنامج .NET Framework:

      http://msdn.microsoft.com/en-us/library/5e9ft273(VS.71).aspx
  5. إضافة دالة التالية إنشاء مفتاح جديد لجلسة كما هو موضح في "الطريقة الثانية":
       ' Call this function to remove the key from memory after it is used for security.   Private Declare Sub ZeroMemory Lib "kernel32.dll" Alias "RtlZeroMemory" _                     (ByVal Destination As String, ByVal Length As Integer)      ' Function to generate a key.   Function GenerateKey() As String      ' Create an instance of Symmetric Algorithm. The key and the IV are generated automatically.      Dim desCrypto As DESCryptoServiceProvider = DESCryptoServiceProvider.Create()      ' Use the automatically generated key for encryption.       Return ASCIIEncoding.ASCII.GetString(desCrypto.Key)   End Function 
  6. إنشاء أسلوب في الفصل الدراسي المسمى EncryptFile. يجب أن يحتوي أسلوب EncryptFile المعلمات الثلاث:
    • sInputFile
    • sOutputFile
    • sKey (هذا هو المفتاح السري الذي يتم استخدامه لتشفير لفك تشفير الملف.)
        Sub EncryptFile(ByVal sInputFilename As String, _                   ByVal sOutputFilename As String, _                   ByVal sKey As String)    End Sub					
  7. في الإجراء EncryptFile إنشاء كائن يقوم FileStream إدخال والإخراج كائن يقوم FileStream. يمكن القراءة من هذه الكائنات وإعادة كتابتها إلى الملفات الهدف.
            Dim fsInput As New FileStream(sInputFilename, _                                    FileMode.Open, FileAccess.Read)        Dim fsEncrypted As New FileStream(sOutputFilename, _                                    FileMode.Create, FileAccess.Write)					
  8. قم بتعريف مثيل فئة DESCryptoServiceProvider. يمثل هذا التشفير الفعلي وتقنية فك التشفير الفعلي المستخدم على الملفات. عند هذه النقطة، يمكنك إنشاء موفر مختلف إذا كنت تريد استخدام الأمان RSA أو آخر تقنية التشفير.
    Dim DES As New DESCryptoServiceProvider()					
  9. يجب توفير موفر خدمات التشفير مع المفتاح السري كـ صفيف من البايت. يوفر مساحة الاسم System.Text دالة يسمى GetBytes(). كجزء من ميزاته الترميز الدالة GetBytes() تأخذ سلسلة ومن ثم إرجاع صفيف من البايت. حجم المفتاح مختلفة بالنسبة لكل أسلوب التشفير. على سبيل المثال، تأخذ مقياس تشفير البيانات "(DES) مفتاح 64 بت يساوي 8 بايت أو 8 أحرف.

    إذا لم تقم بتوفير مفتاح الموفر بشكل عشوائي بإنشاء واحدة. هذا بتشفير الملف بنجاح ولكن لا توجد أية طريقة لفك تشفير الملف. لاحظ أنه يجب أيضاً توفير IV. يتم استخدام هذه القيمة كجزء من التشفير. مثل المفتاح, يتم إنشاء IV بشكل عشوائي إذا لم توفر القيمة. لأنه يجب أن تكون القيم نفسها من أجل التشفير وفك ، يجب أن لا سمحت الجيل عشوائي من هذه القيم.
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)					
  10. إنشاء مثيل لفئة CryptoStream. استخدام موفر خدمات التشفير إلى الحصول على كائن تشفير (CreateEncryptor) و الموجود لإخراج الكائن يقوم FileStream كجزء من المُنشئ.
    Dim cryptostream As New CryptoStream(fsEncrypted, _                                     desencrypt, _                                     CryptoStreamMode.Write)					
  11. قراءة في ملف الإدخال ومن ثم كتابة إلى ملف الإخراج. المرور من خلال الكائن CryptoStream حيث تشفير الملف باستخدام المفتاح الذي قمت بتوفيره.
    Dim bytearrayinput(fsInput.Length - 1) As BytefsInput.Read(bytearrayinput, 0, bytearrayinput.Length)cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)					
فك تشفير ملف "، اتبع الخطوات التالية:
  1. إنشاء أسلوب يسمى DecryptFile. يشبه عملية فك التشفير عملية التشفير. ومع ذلك، لدى DecryptFile اختلافات رئيسية اثنين من الإجراء EncryptFile.
    • يتم استخدام CreateDecryptor بدلاً من CreateEncryptor لإنشاء كائن CryptoStream التي تحدد كيف يمكن استخدام الكائن.
    • عند كتابة النص الذي تم فك تشفيره إلى الملف الوجهة CryptoStream هو الآن مصدر بدلاً من دفق الوجهة.
    Sub DecryptFile(ByVal sInputFilename As String, _    ByVal sOutputFilename As String, _    ByVal sKey As String)    Dim DES As New DESCryptoServiceProvider()    'A 64-bit key and an IV are required for this provider.    'Set secret key for DES algorithm.    DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)    'Set initialization vector.    DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)    'Create a file stream to read the encrypted file back.    Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)    'Create a DES Decryptor from your DES instance.    Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor()    'Create a crypto stream set to read and to do a DES decryption transform on incoming bytes.    Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)    'Print out the contents of the decrypted file.    Dim fsDecrypted As New StreamWriter(sOutputFilename)    fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd)    fsDecrypted.Flush()    fsDecrypted.Close()End Sub					
  2. أضف الأسطر التالية إلى إجراء Main() استدعاء كل EncryptFile و DecryptFile.
        Public Sub Main()      'Must be 64 bits, 8 bytes.      Dim sSecretKey As String      ' Get the key for the file to encrypt.      ' You can distribute this key to the user who will decrypt the file.      sSecretKey = GenerateKey()      ' For additional security, pin the key.      Dim gch As GCHandle = GCHandle.Alloc(sSecretKey, GCHandleType.Pinned)      ' Encrypt the file.              EncryptFile("%USERPROFILE%\MyData.txt", _                      "%USERPROFILE%\Encrypted.txt", _                      sSecretKey)      ' Decrypt the file.      DecryptFile("%USERPROFILE%\Encrypted.txt", _                  "%USERPROFILE%\Decrypted.txt", _                  sSecretKey)      ' Remove the key from memory.      ZeroMemory(gch.AddrOfPinnedObject(), sSecretKey.Length * 2)      gch.Free()   End Sub
  3. حفظ الملف. تشغيل التطبيق الخاص بك. تأكد من أن المسار الذي يتم استخدام اسم ملف الإدخال يشير إلى ملفات غير هامة مع موجودة.
back to the top

تحقق من التي في التشفير و إلغاء التشفير في العمل

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

back to the top

قائمة رمز اكتمال

Imports SystemImports System.IOImports System.SecurityImports System.Security.CryptographyImports System.Runtime.InteropServicesImports System.TextModule Module1   ' Call this function to remove the key from memory after it is used for security.   <DllImport("kernel32.dll")> _   Public Sub ZeroMemory(ByVal addr As IntPtr, ByVal size As Integer)   End Sub   ' Function to generate a 64-bit key.   Function GenerateKey() As String      ' Create an instance of a symmetric algorithm. The key and the IV are generated automatically.      Dim desCrypto As DESCryptoServiceProvider = DESCryptoServiceProvider.Create()      ' Use the automatically generated key for encryption.       Return ASCIIEncoding.ASCII.GetString(desCrypto.Key)   End Function   Sub EncryptFile(ByVal sInputFilename As String, _                  ByVal sOutputFilename As String, _                  ByVal sKey As String)      Dim fsInput As New FileStream(sInputFilename, _                                  FileMode.Open, FileAccess.Read)      Dim fsEncrypted As New FileStream(sOutputFilename, _                                  FileMode.Create, FileAccess.Write)      Dim DES As New DESCryptoServiceProvider()      'Set secret key for DES algorithm.      'A 64-bit key and an IV are required for this provider.      DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)      'Set the initialization vector.      DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)      'Create the DES encryptor from this instance.      Dim desencrypt As ICryptoTransform = DES.CreateEncryptor()      'Create the crypto stream that transforms the file stream by using DES encryption.      Dim cryptostream As New CryptoStream(fsEncrypted, _                                          desencrypt, _                                          CryptoStreamMode.Write)      'Read the file text to the byte array.      Dim bytearrayinput(fsInput.Length - 1) As Byte      fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)      'Write out the DES encrypted file.      cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)      cryptostream.Close()   End Sub   Sub DecryptFile(ByVal sInputFilename As String, _       ByVal sOutputFilename As String, _       ByVal sKey As String)      Dim DES As New DESCryptoServiceProvider()      'A 64-bit key and an IV are required for this provider.      'Set the secret key for the DES algorithm.      DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)      'Set the initialization vector.      DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)      'Create the file stream to read the encrypted file back.      Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)      'Create the DES decryptor from the DES instance.      Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor()      'Create the crypto stream set to read and to do a DES decryption transform on incoming bytes.      Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)      'Print out the contents of the decrypted file.      Dim fsDecrypted As New StreamWriter(sOutputFilename)      fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd)      fsDecrypted.Flush()      fsDecrypted.Close()   End Sub   Public Sub Main()      'Must be 64 bits, 8 bytes.      Dim sSecretKey As String      ' Get the key for the file to encrypt.      ' You can distribute this key to the user who will decrypt the file.      sSecretKey = GenerateKey()      ' For additional security, pin the key.      Dim gch As GCHandle = GCHandle.Alloc(sSecretKey, GCHandleType.Pinned)      ' Encrypt the file.              EncryptFile("%USERPROFILE%\MyData.txt", _                      "%USERPROFILE%\Encrypted.txt", _                      sSecretKey)      ' Decrypt the file.      DecryptFile("%USERPROFILE%\Encrypted.txt", _                  "%USERPROFILE%\Decrypted.txt", _                  sSecretKey)      ' Remove the key from memory.       ZeroMemory(gch.AddrOfPinnedObject(), sSecretKey.Length * 2)      gch.Free()   End SubEnd Module
back to the top
مراجع
للحصول على مزيد من المعلومات حول كيفية استخدام ميزات التشفير .NET وحول التشفير بزيارة مواقع Microsoft التالية على الويب:

http://msdn.microsoft.com/net

http://code.msdn.microsoft.com/

back to the top

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 301070 - آخر مراجعة: 12/06/2006 23:18:59 - المراجعة: 5.6

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbsecurity kbio kbcrypt kbhowtomaster KB301070 KbMtar
تعليقات
ttps://c1.microsoft.com/c.gif?DI=4050&did=1&t=">amp;t=">l>/html>;did=1&t=">