Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Trình duyệt của bạn không được hỗ trợ

Bạn cần cập nhật trình duyệt của mình để sử dụng trang web.

Cập nhật lên Internet Explorer phiên bản mới nhất.

Làm thế nào để mã hóa và giải mã một tập tin bằng cách sử dụng Visual Basic.NET hoặc Visual Basic 2005

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:301070
Đối với một Microsoft Visual C#.NET Phiên bản này viết, xem 307010.
Bài viết này đề cập đến Microsoft sau.NET Khuôn khổ không gian tên thư viện lớp:
  • System.io
  • System.Security
  • System.Security.cryptography

TRONG TÁC VỤ NÀY

TÓM TẮT
Bài viết này mô tả cách sử dụng các lớp học mật mã học mà được cung cấp bởi Microsoft.NET Framework. Bạn có thể sử dụng mật mã học các lớp học để mã hóa một tập tin văn bản đến trạng thái không đọc được. Sau đó, bạn có thể giải mã tệp văn bản đó quay lại định dạng ban đầu của nó.

Quay lại đầu trang

Yêu cầu

Danh sách sau vạch ra được đề nghị phần cứng, phần mềm, hạ tầng mạng, và gói dịch vụ mà bạn phải có:
  • Microsoft Windows XP, Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, hoặc máy chủ Microsoft Windows NT 4.0
  • Microsoft Visual Studio.NET hoặc Microsoft Visual Studio 2005
Quay lại đầu trang

Sử dụng mã hóa và giải mã

Không gian tên System.Security.Cryptographic trong các.NET Framework cung cấp một loạt các công cụ để hỗ trợ trong mã hóa và giải mã. Các CryptoStream lớp học là một trong nhiều lớp học được cung cấp. Các CryptoStream lớp học được thiết kế để mật mã hóa hoặc giải mã nội dung như các nội dung được xem trực tiếp ra vào một tập tin.

Mật mã hóa một tập tin, làm theo các bước sau:
  1. Chạy Visual Studio.NET hoặc Visual Studio 2005.
  2. Tạo một ứng dụng giao diện điều khiển mới trong Visual Basic.NET hay Visual Basic 2005. Một mô-đun được tạo ra cho bạn, cùng với một sản phẩm nào Main() thủ tục.
  3. Sử dụng các Nhập khẩu tuyên bố trên không gian tên hệ thống, không gian tên System.Security, không gian tên System.Security.Cryptography, không gian tên System.Text, và các Không gian tên System.io. Bạn phải làm điều này, do đó bạn không cần phải vượt qua vòng loại khai báo từ các không gian tên sau trong mã của bạn. Bạn phải sử dụng các thẻ phát biểu trước khi bất kỳ tờ khai khác.
    Imports SystemImports System.IOImports System.SecurityImports System.Security.CryptographyImports System.Runtime.InteropServicesImports System.Text					
  4. Tạo ra một khóa bí mật mã hóa và giải mã dữ liệu. Các DESCryptoServiceProvider lớp được dựa trên một thuật toán mật mã đối xứng. Các đối xứng mã hóa đòi hỏi một khóa và một véc tơ khởi tạo (IV) để mã hóa các dữ liệu. Để giải mã dữ liệu, bạn phải có cùng một và cùng một IV. Bạn phải cũng sử dụng thuật toán mã hóa tương tự. Bạn có thể tạo ra các phím bằng cách sử dụng một trong những phương pháp sau đây:
    • Phương pháp 1 Bạn có thể nhắc người dùng cho mật khẩu. Sau đó, sử dụng mật khẩu như Điều quan trọng và các IV.
    • Phương pháp 2 Khi bạn tạo ra một trường hợp mới của sự đối xứng mật mã các lớp học, khóa mới và một IV mới sẽ tự động tạo ra cho kỳ họp. Bạn có thể sử dụng chìa khóa và IV được tạo ra bởi các quản lý đối xứng các lớp học mật mã để mã hóa và giải mã tập tin.

      Để biết thêm thông tin về làm thế nào để tạo ra và phân phối các phím, hãy truy cập sau đây Web site của Microsoft hoặc xem các.NET Framework kit phát triển phần mềm (SDK) tài liệu:

      http://MSDN.Microsoft.com/en-US/Library/5e9ft273 (VS.71) .aspx
  5. Thêm các chức năng sau đây để tạo ra một khóa cho một Phiên làm việc như đã nêu trong phương pháp 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. Tạo ra một phương pháp trong các lớp học của bạn được đặt tên theo EncryptFile. Các EncryptFile phương pháp phải có 3 thông số:
    • sInputFile
    • sOutputFile
    • sKey (Đây là chìa khóa bí mật được sử dụng để mã hóa và giải mã " các tập tin.)
        Sub EncryptFile(ByVal sInputFilename As String, _                   ByVal sOutputFilename As String, _                   ByVal sKey As String)    End Sub					
  7. Trong các EncryptFile thủ tục, tạo một đầu vào FileStream đối tượng và sản lượng FileStream đối tượng. Các đối tượng có thể được đọc từ và ghi vào mục tiêu tập tin.
            Dim fsInput As New FileStream(sInputFilename, _                                    FileMode.Open, FileAccess.Read)        Dim fsEncrypted As New FileStream(sOutputFilename, _                                    FileMode.Create, FileAccess.Write)					
  8. Tuyên bố một thể hiện của các DESCryptoServiceProvider lớp học. Điều này đại diện cho các mã hóa thực tế và thực tế công nghệ giải mã được sử dụng trên các tập tin. Tại thời điểm này, bạn có thể tạo một nhà cung cấp khác nhau nếu bạn muốn sử dụng bảo mật RSA này hay cách khác mật mã kỹ thuật.
    Dim DES As New DESCryptoServiceProvider()					
  9. Mật mã nhà cung cấp phải được cung cấp của bạn khóa bí mật như một mảng của byte. Không gian tên System.Text cung cấp một chức năng mà được đặt tên theo GetBytes(). Như một phần của tính năng mã hóa của nó, các GetBytes() chức năng diễn một chuỗi và sau đó trả về một mảng của byte. Các Kích thước của phím là khác nhau cho mỗi kỹ thuật mật mã. Ví dụ, Data Encryption Standard (DES) mất một 64-bit chính mà bằng đến 8 byte hoặc với 8 ký tự.

    Nếu bạn không cung cấp một khóa, các nhà cung cấp ngẫu nhiên tạo ra một. Điều này thành công mã hóa tập tin, nhưng không có cách nào để giải mã tập tin. Lưu ý rằng bạn cũng phải cung cấp các IV. Giá trị này được sử dụng như một phần của các mã hóa. Giống như chìa khóa, các IV được tạo ngẫu nhiên ra nếu bạn làm cung cấp giá trị. Bởi vì các giá trị phải giống nhau cho cả hai các mã hóa và giải mã, bạn phải cho phép ngẫu nhiên thế hệ số này các giá trị.
    DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)					
  10. Tạo một thể hiện của các CryptoStream lớp học. Sử dụng các nhà cung cấp mật mã để có được một mật mã hóa đối tượng)CreateEncryptor) và đầu ra hiện có FileStream đối tượng là một phần của các nhà xây dựng.
    Dim cryptostream As New CryptoStream(fsEncrypted, _                                     desencrypt, _                                     CryptoStreamMode.Write)					
  11. Đọc trong tập tin đầu vào, và sau đó ghi đến đầu ra tập tin. Đi qua các CryptoStream đối tượng mà các tập tin được mã hóa bằng cách sử dụng chìa khóa mà bạn cung cấp.
    Dim bytearrayinput(fsInput.Length - 1) As BytefsInput.Read(bytearrayinput, 0, bytearrayinput.Length)cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)					
Để giải mã tập tin, hãy làm theo các bước sau:
  1. Tạo ra một phương pháp được đặt tên theo DecryptFile. Tiến trình giải mật mã là tương tự như quá trình mã hóa. Tuy nhiên, DecryptFile có hai sự khác biệt quan trọng từ các EncryptFile thủ tục.
    • CreateDecryptor được sử dụng thay CreateEncryptor để tạo ra các CryptoStream đối tượng xác định như thế nào đối tượng có thể được sử dụng.
    • Khi các văn bản giải mã được viết đến đích tập tin, các CryptoStream bây giờ là nguồn thay vì của các điểm đến dòng.
    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. Thêm dòng sau vào các Main() thủ tục để kêu gọi cả hai EncryptFileDecryptFile.
        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. Lưu tập tin. Chạy ứng dụng của bạn. Hãy chắc chắn rằng các đường dẫn được sử dụng cho tên tập tin đầu vào điểm đến một hiện có và một không tập tin quan trọng.
Quay lại đầu trang

Xác minh rằng các mã hóa và giải mã hoạt động

Kiểm tra mã này với một tập tin văn bản (.txt) để xác nhận rằng tập tin một cách chính xác được mã hóa và giải mã. Đảm bảo rằng bạn giải mã tập tin vào một tệp mới (như trong các Phụ Main() thủ tục trong bài viết này) thay vì tệp gốc. Kiểm tra các tập tin giải mã và so sánh các tập tin giải mã cho các Ban đầu.

Quay lại các đầu trang

Danh sách các mã hoàn chỉnh

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
Quay lại đầu trang
THAM KHẢO
Để biết thêm về cách sử dụng các mật mã tính năng của.NET và về mật mã học, truy cập vào trang Web Microsoft sau đây các trang web:

http://MSDN.Microsoft.com/net

http://Code.MSDN.Microsoft.com/

Quay lại đầu trang

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 301070 - Xem lại Lần cuối: 08/26/2011 10:54:00 - Bản sửa đổi: 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 KbMtvi
Phản hồi
osoft.com/ms.js'><\/script>");