Anda sedang offline saat ini, menunggu internet Anda untuk menyambung kembali

Cara mengenkripsi dan mendekripsi berkas dengan menggunakan Visual Basic.NET atau Visual Basic 2005

PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.

Klik disini untuk melihat versi Inggris dari artikel ini:301070
Untuk Microsoft Visual C#.NET versi ini Pasal, lihat 307010.
Artikel ini merujuk kepada Microsoft berikut.NET Kerangka perpustakaan kelas namespaces:
  • System.io
  • System.Security
  • System.Security.cryptography

DALAM TUGAS INI

RINGKASAN
Artikel ini menjelaskan cara menggunakan kriptografi kelas yang disediakan oleh Microsoft.NET Framework. Anda dapat menggunakan kriptografi kelas untuk mengenkripsi file teks ke keadaan tidak terbaca. Kemudian, Anda dapat mendekripsi file teks itu kembali ke format asli.

kembali ke atas

Persyaratan

Daftar berikut menguraikan fitur perangkat keras, perangkat lunak, jaringan infrastruktur, dan paket layanan yang Anda harus:
  • Microsoft Windows XP, Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, atau Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio.NET atau Microsoft Visual Studio 2005
kembali ke atas

Penggunaan enkripsi dan dekripsi

System.Security.Cryptographic namespace dalam.NET Framework menyediakan berbagai alat untuk membantu dalam enkripsi dan dekripsi. The CryptoStream kelas adalah salah satu dari banyak kelas yang disediakan. The CryptoStream kelas ini dirancang untuk mengenkripsi atau mendekripsi konten sebagai yang isi mengalir keluar ke file.

Mengenkripsi berkas, ikuti langkah-langkah:
  1. Menjalankan Visual Studio.NET atau Visual Studio 2005.
  2. Membuat aplikasi konsol baru dalam Visual Basic.BERSIH atau pada Visual Basic 2005. A modul ini dibuat untuk Anda, bersama dengan kosong Main() prosedur.
  3. Penggunaan Impor pernyataan pada sistem namespace, System.Security namespace, System.Security.Cryptography namespace, System.Text namespace, dan System.io namespace. Anda harus melakukan hal ini sehingga Anda tidak harus memenuhi syarat Deklarasi dari namespaces ini kemudian dalam kode Anda. Anda harus menggunakan ini pernyataan sebelum deklarasi lain.
    Imports SystemImports System.IOImports System.SecurityImports System.Security.CryptographyImports System.Runtime.InteropServicesImports System.Text					
  4. Menghasilkan kunci rahasia untuk mengenkripsi dan mendekripsi data. The DESCryptoServiceProvider kelas ini didasarkan pada algoritma enkripsi simetris. Simetris enkripsi memerlukan kunci dan vektor inisialisasi (IV) untuk mengenkripsi data. Untuk mendekripsi data, Anda harus memiliki tombol yang sama dan IV sama. Anda harus juga menggunakan algoritma enkripsi yang sama. Anda dapat menghasilkan kunci dengan menggunakan salah satu metode berikut:
    • Metode 1 Anda dapat meminta pengguna untuk password. Kemudian, gunakan sandi sebagai kunci dan IV.
    • Metode 2 Ketika Anda membuat contoh baru dari simetris kriptografi kelas, kunci baru dan IV baru secara otomatis dibuat untuk sesi. Anda dapat menggunakan tombol dan IV yang dihasilkan oleh dikelola simetris kriptografi kelas untuk mengenkripsi dan mendekripsi berkas.

      Untuk lebih informasi tentang cara untuk menghasilkan dan mendistribusikan kunci, kunjungi berikut Situs Web Microsoft atau lihat.NET Framework software development kit (SDK) Dokumentasi:

      .aspx http://MSDN.Microsoft.com/en-us/library/5e9ft273 (VS.71)
  5. Tambahkan fungsi berikut untuk menghasilkan sebuah kunci baru untuk sesi seperti tercantum dalam metode 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. Menciptakan metode di kelas Anda yang bernama EncryptFile. The EncryptFile metode harus memiliki tiga parameter:
    • sInputFile
    • sOutputFile
    • sKey (Ini adalah kunci rahasia yang digunakan untuk mengenkripsi dan mendekripsi» berkas.)
        Sub EncryptFile(ByVal sInputFilename As String, _                   ByVal sOutputFilename As String, _                   ByVal sKey As String)    End Sub					
  7. Dalam EncryptFile prosedur, membuat input FileStream objek dan output FileStream objek. Objek ini dapat dibaca dari dan ditulis ke target file.
            Dim fsInput As New FileStream(sInputFilename, _                                    FileMode.Open, FileAccess.Read)        Dim fsEncrypted As New FileStream(sOutputFilename, _                                    FileMode.Create, FileAccess.Write)					
  8. Menyatakan contoh DESCryptoServiceProvider kelas. Ini mewakili enkripsi sebenarnya dan sebenarnya dekripsi teknologi yang digunakan pada file. Pada titik ini, Anda dapat membuat penyedia berbeda jika Anda ingin menggunakan RSA security atau lain kriptografi teknik.
    Dim DES As New DESCryptoServiceProvider()					
  9. Penyedia kriptografi harus disediakan dengan Anda kunci rahasia sebagai array byte. System.Text namespace menyediakan fungsi yang dinamakan GetBytes(). Sebagai bagian dari fitur encoding, GetBytes() fungsi string yang diperlukan dan kemudian mengembalikan array byte. The ukuran tombol berbeda untuk setiap teknik kriptografi. Sebagai contoh, Data Encryption Standard (DES) mengambil 64-bit kunci yang sama dengan 8 byte atau untuk 8 karakter.

    Jika Anda tidak memberikan kunci, penyedia secara acak menghasilkan satu. Ini berhasil mengenkripsi file, tetapi ada cara untuk mendekripsi berkas. Catatan bahwa Anda juga harus memberikan IV. Nilai ini digunakan sebagai bagian dari enkripsi. Seperti tombol, IV acak yang dihasilkan jika Anda melakukan tidak memberikan nilai. Karena nilai-nilai harus sama untuk kedua enkripsi dan dekripsi, Anda harus tidak mengijinkan acak generasi ini nilai-nilai.
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)					
  10. Membuat sebuah instance dari CryptoStream kelas. Menggunakan penyedia kriptografi untuk mendapatkan enkripsi objek)CreateEncryptor) dan output ada FileStream objek sebagai bagian dari konstruktor.
    Dim cryptostream As New CryptoStream(fsEncrypted, _                                     desencrypt, _                                     CryptoStreamMode.Write)					
  11. Membaca di input file, dan kemudian menulis output file. Melewati CryptoStream objek di mana file telah dienkripsi dengan menggunakan tombol yang Anda disediakan.
    Dim bytearrayinput(fsInput.Length - 1) As BytefsInput.Read(bytearrayinput, 0, bytearrayinput.Length)cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)					
Untuk mendekripsi berkas, ikuti langkah berikut:
  1. Menciptakan metode yang bernama DecryptFile. Proses dekripsi ini mirip dengan proses enkripsi. Namun, DecryptFile memiliki dua perbedaan utama dari EncryptFile prosedur.
    • CreateDecryptor digunakan sebagai pengganti CreateEncryptor untuk membuat CryptoStream objek yang menentukan cara objek dapat digunakan.
    • Ketika teks didekripsi ditulis ke tujuan file, CryptoStream objek sekarang adalah sumber bukan tujuan streaming.
    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. Tambahkan baris berikut ke Main() prosedur untuk memanggil kedua EncryptFile dan 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. Simpan berkas tersebut. Menjalankan aplikasi Anda. Pastikan bahwa jalan yang digunakan untuk nama input file poin untuk yang sudah ada dan tidak file penting.
kembali ke atas

Memverifikasi bahwa enkripsi dan dekripsi bekerja

Menguji kode ini dengan file teks (.txt) untuk mengkonfirmasi bahwa berkas dengan benar dienkripsi dan didekripsi. Pastikan bahwa Anda mendekripsi berkas file baru (seperti dalam Sub Main() prosedur dalam artikel ini) bukan ke file asli. Memeriksa dekripsi file dan membandingkan dekripsi file untuk asli.

kembali ke atas

Daftar kode lengkap

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
kembali ke atas
REFERENSI
Untuk informasi lebih lanjut tentang bagaimana menggunakan kriptografi fitur.NET dan tentang kriptografi, kunjungi Website Microsoft berikut situs:

http://MSDN.Microsoft.com/net

http://code.msdn.Microsoft.com/

kembali ke atas

Peringatan: Artikel ini telah diterjemahkan secara otomatis

Properti

ID Artikel: 301070 - Tinjauan Terakhir: 09/24/2011 13:51:00 - Revisi: 2.0

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

  • kbvs2005swept kbvs2005applies kbsecurity kbio kbcrypt kbhowtomaster kbmt KB301070 KbMtid
Tanggapan
javascript"> Asimov.clickstreamTracker.init();