Ako na šifrovanie a dešifrovanie súboru pomocou jazyka Visual Basic.NET alebo Visual Basic 2005

Preklady článku Preklady článku
ID článku: 301070 - Zobraziť produkty, ktorých sa tento článok týka.
Pre Microsoft Visual C#.NET verzie tohto článok, pozri 307010.
Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok popisuje použitie kryptografie tried ktoré sú k dispozícii od spoločnosti Microsoft.NET Framework. Môžete použiť šifrovanie triedy na zašifrovanie textový súbor nečitateľný štátu. Potom môžete jednoducho dešifrovať Tento textový súbor späť do jeho pôvodného formátu.



Požiadavky

Nasledujúci zoznam popisuje odporúčané hardware, software, sieťovú infraštruktúru a balíky service pack, ktoré musíte mať:
  • Systém Microsoft Windows XP, Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Systém Windows 2000 Advanced Server alebo Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio.NET alebo Microsoft Visual Studio 2005

Použiť šifrovanie a dešifrovanie

Namespace System.Security.Cryptographic v.NET Framework poskytuje rôzne nástroje na pomoc v šifrovanie a dešifrovanie. V CryptoStream Trieda je jedným z mnohých tried, ktorá sa poskytuje. V CryptoStream Trieda je navrhnutý na šifrovanie alebo dešifrovanie obsahu ako obsah je prenášaný von do súboru.

Pri šifrovaní súboru, postupujte podľa týchto kroky:
  1. Spustiť Visual Studio.NET alebo Visual Studio 2005.
  2. Vytvorte novú konzolovú aplikáciu Visual Basic.ČISTÁ alebo v jazyku Visual Basic 2005. A modul je vytvorený pre vás, spolu s prázdne Main() .
  3. Použitie Dovozy vyhlásenie o systém názvov na priestor názvov System.Security System.Security.Cryptography priestoru názvov, v priestore názvov System.Text a System.io priestor názvov. Musíte to urobiť tak, že nemáte nárok vyhlásenia od tieto priestory názvov v kóde neskôr. Musíte použiť tieto vyhlásenia pred všetkými ostatnými deklaráciami.
    Imports System
    Imports System.IO
    Imports System.Security
    Imports System.Security.Cryptography
    Imports System.Runtime.InteropServices
    Imports System.Text
    					
  4. Generovať tajný kľúč na šifrovanie a dešifrovanie údajov. V DESCryptoServiceProvider Trieda je založený na symetrické šifrovací algoritmus. Symetrická šifrovanie vyžaduje kľúča a inicializačný vektor (IV) na šifrovanie údaje. Na dešifrovanie údajov, musia mať rovnaký kľúč a rovnaké IV. Musíte tiež použiť rovnaké šifrovací algoritmus. Klávesy môžete vytvárať pomocou jednou z nasledujúcich metód:
    • Postup č. 1 Môžete vyzve používateľa na zadanie hesla. Potom použite heslo ako tla?idlo a IV.
    • Metóda 2 Keď vytvoríte novú inštanciu symetrická za kryptografické tried, nový kľúč a nový IV sú automaticky vytvorí pre reláciu. Ste môžete použiť kľúč a IV, ktoré sú generované Autor spravovaných symetrické kryptografické tried na šifrovanie a dešifrovanie súborov.

      Pre viac informácie o tom, ako vytvárať a distribuovať kľúče, navštívte nasledujúce Webovú lokalitu spoločnosti Microsoft alebo pozri.NET Framework software development kit (SDK) dokumentácia:

      http://msdn.Microsoft.com/en-us/library/5e9ft273 (VS.71) .aspx
  5. Pridať nasledovné funkcie generovať nový kľúč pre relácie ako je poznamenané v metóde 2:
       ' 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. Vytvoriť metódu na svoju triedou, ktorý sa nazýva EncryptFile. V EncryptFile metóda musí mať tri parametre:
    • sInputFile
    • sOutputFile
    • soportuma (Je to tajný kľúč, ktorý sa používa na šifrovanie a dešifrovanie súbor.)
        Sub EncryptFile(ByVal sInputFilename As String, _
                       ByVal sOutputFilename As String, _
                       ByVal sKey As String)
        End Sub
    					
  7. V EncryptFile postup, vytvoriť vstup FileStream objekt a výstup FileStream objekt. Tieto objekty môžete čítať a písomné na cieľ súbory.
            Dim fsInput As New FileStream(sInputFilename, _
                                        FileMode.Open, FileAccess.Read)
            Dim fsEncrypted As New FileStream(sOutputFilename, _
                                        FileMode.Create, FileAccess.Write)
    					
  8. Vyhlásiť inštanciu DESCryptoServiceProvider trieda. Toto predstavuje skutočný šifrovanie a skutočným Dešifrovanie technológia, ktorá sa používa na súbory. Na tomto mieste môžete vytvoriť iného poskytovateľa, ak chcete použiť RSA, zabezpečenie alebo iného kryptografické technika.
    Dim DES As New DESCryptoServiceProvider()
    					
  9. Musia byť vybavené kryptografické poskytovateľ vaše tajný kľúč ako pole bajtov. System.Text namespace poskytuje funkcie že je pomenovaný GetBytes(). Ako súčasť jeho kódovanie funkcie GetBytes() Funkcia berie reťazec a potom vracia pole bajtov. V veľkosť kľúča je rôzne pre každý šifrovacie techniky. Napríklad, Štandard DES (Data Encryption) trvá 64-bitový kľúč, ktorý sa rovná 8 bajtov alebo až 8 znakov.

    Ak ste neposkytujú kľúča, poskytovateľ náhodne vytvára jeden. To úspešne šifruje súbor, ale neexistuje spôsob, ako na dešifrovanie súborov. Všimnite si, že musíte tiež poskytnúť IV. Táto hodnota sa používa ako časť šifrovanie. Ako kľúč, IV náhodne generovaný-li poskytnúť hodnotu. Pretože hodnoty musia byť rovnaké pre obidva šifrovanie a dešifrovanie, musí neumožňujú pseudonáhodných týchto hodnoty.
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
    DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
    					
  10. Vytvoriť inštanciu CryptoStream trieda. Používanie kryptografického poskytovateľa získať šifrovania objekt)CreateEncryptor) a existujúce výstup FileStream objekt ako súčasť konštruktér.
    Dim cryptostream As New CryptoStream(fsEncrypted, _
                                         desencrypt, _
                                         CryptoStreamMode.Write)
    					
  11. Prečítajte si vo vstupnom súbore a potom zapísať na výstup súbor. Prechádzať CryptoStream objekt kde je súbor šifrovaný pomocou klávesu aby ste si poskytnuté.
    Dim bytearrayinput(fsInput.Length - 1) As Byte
    fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)
    cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)
    					
Ak chcete dešifrovať niektorý súbor, postupujte nasledovne:
  1. Vytvoriť metódy, ktorá je pomenovaná DecryptFile. Proces dešifrovania sa podobá šifrovacieho procesu. Avšak, DecryptFile má dve hlavné rozdiely z EncryptFile .
    • CreateDecryptor používa namiesto CreateEncryptor Ak chcete vytvoriť CryptoStream objekt, ktorý určuje, ako objekt môže byť použitý.
    • Keď je dešifrovaný text napísaný na miesto určenia súbor, CryptoStream objekt je teraz zdroj namiesto miesto určenia prúd.
    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. Pridajte nasledujúce riadky do Main() postup obaja volanie EncryptFile a 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. Uložte súbor. Spustite vašej aplikácie. Skontrolujte, či cesta, ktorá sa používa pre body meno vstupného súboru na existujúci a nie dôležitý súbor.

Overiť, že šifrovanie a dešifrovanie pracovať

Test tohto kódexu s textom (.txt) súboru potvrdiť, že súbor správne šifrovať a dešifrovať. Uistite sa, že ste dešifrovať súbor nový súbor (ako v Sub Main() postup v tomto článku) namiesto pôvodného súboru. Preskúma dešifrovaného súboru a porovnať dešifrovaný súbor pôvodné.

Zoznam kompletné kód

Imports System
Imports System.IO
Imports System.Security
Imports System.Security.Cryptography
Imports System.Runtime.InteropServices
Imports System.Text


Module 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 Sub

End Module

ODKAZY

Ďalšie informácie o používaní kryptografickému znaky.NET a o kryptografii navštíviť Microsoft Web stránky:

http://msdn.Microsoft.com/net

http://code.MSDN.Microsoft.com/

Vlastnosti

ID článku: 301070 - Posledná kontrola: 30. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
Kľúčové slová: 
kbvs2005swept kbvs2005applies kbsecurity kbio kbcrypt kbhowtomaster kbmt KB301070 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:301070

Odošlite odozvu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com