Bạn ghé thăm diễn đàn lần đầu? hãy đăng ký ngay bây giờ để tham gia.
  • Đăng nhập:

Chào mừng bạn đến với ITVNN FORUM - Diễn đàn công nghệ thông tin.

Nếu đây là lần đầu tiên bạn tham gia diễn đàn, xin mời bạn xem phần Hỏi/Ðáp để biết cách dùng diễn đàn. Để có thể tham gia thảo luận bạn phải đăng ký làm thành viên, click vào đây để đăng ký.


  • Partner Area
    • ITVNN HOSTING - Thiết kế website, Cung cấp Domain, Hosting, VPS Việt Nam Anh Hùng - Thông tin truyền thông
kết quả từ 1 tới 1 trên 1
Tăng kích thước phông chữ Giảm kích thước phông chữ
  1. #1
    Cuni's Avatar

    Trạng thái
    Offline
    Tham gia ngày
    Sep 2009
    Thành viên thứ
    231
    Giới tính
    Bài gởi
    144
    Level: 35 [?]
    Experience: 768,405
    Next Level: 824,290
    Cảm ơn 3
    Cảm ơn 2 lần / 2 Bài viết

    Default Kiểm tra hai file có trùng nhau không  

    Bạn cần so sánh nội dung của hai file.
    Tính mã băm của mỗi file bằng lớp HashAlgorithm, và so sánh các mã băm.
    Có nhiều cách để so sánh file. Ví dụ, có thể khảo sát một phần của file để tìm dữ liệu giống nhau, hoặc đọc và so sánh từng byte một. Cả hai cách trên đều đúng, nhưng trong một số trường hợp, sử dụng mã băm sẽ thuận tiện hơn.
    Một giải thuật băm sinh ra một dạng nhị phân đặc trưng cho file (với kích thước nhỏ, thường khoảng 20 byte). Có thể hai file khác nhau có cùng mã băm, nhưng khả năng này hầu như không xảy ra. Thực tế, cả những thay đổi nhỏ nhất (chẳng hạn, chỉ thay đổi một bit trong file nguồn) cũng có 50% khả năng thay đổi các bit trong mã băm. Do đó, mã băm thường được sử dụng để phát hiện dữ liệu bị sửa đổi.
    Để tạo một mã băm, trước hết bạn phải tạo một đối tượng HashAlgorithm bằng phương thức chia sẻ HashAlgorithm.Create. Sau đó gọi HashAlgorithm.ComputeHash để nhận về mảng byte chứa mã băm.
    Ví dụ dưới đây đọc hai tên file từ đối số dòng lệnh và kiểm tra hai file này có trùng nhau hay không:
    Public Module FileCompare
    Public Sub Main(ByVal args() As String)
    If args.Length <> 2 Then
    Console.WriteLine("Wrong number of arguments.")
    Console.WriteLine("Specify two files.")
    Else
    Console.WriteLine("Comparing " & args(0) & " and " & args(1))
    ' Tạo đối tượng băm.
    Dim Hash As System.Security.Cryptography.HashAlgorithm
    Hash = System.Security.Cryptography.HashAlgorithm.Create( )
    ' Tính mã băm cho file thứ nhất.
    Dim fsA As New FileStream(args(0), FileMode.Open)
    Dim HashA() As Byte = Hash.ComputeHash(fsA)
    fsA.Close()
    ' Tính mã băm cho file thứ hai.
    Dim fsB As New FileStream(args(1), FileMode.Open)
    Dim HashB() As Byte = Hash.ComputeHash(fsB)
    fsB.Close()
    ' So sánh mã băm.
    If BitConverter.ToString(HashA) = _
    BitConverter.ToString(HashB) Then
    Console.WriteLine("Files match.")
    Else
    Console.WriteLine("No match.")
    End If
    End If
    Console.ReadLine()
    End Sub
    End Module
    Trước khi so sánh, các mã băm được chuyển thành chuỗi. Bạn cũng có thể so sánh chúng bằng cách duyệt qua mảng và so từng byte.

    (Sưu tầm)


 

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Trả lời: 0
    Bài mới gởi: 21-10-2021, 04:15 PM
  2. Làm sao cho hình sản phẩm đều nhau
    By minhthai in forum Template
    Trả lời: 0
    Bài mới gởi: 06-06-2012, 10:02 AM
  3. cùng nhau thư giản một tí
    By oahqvan8011 in forum Góc thư giãn
    Trả lời: 0
    Bài mới gởi: 11-08-2010, 03:37 PM
  4. Đối nhau
    By ..::Songuku95::.. in forum Truyện cười
    Trả lời: 0
    Bài mới gởi: 11-11-2009, 12:34 PM
  5. Đọc các file khác nhau bằng C++
    By Cuni in forum C / C++ / C#
    Trả lời: 0
    Bài mới gởi: 10-09-2009, 09:51 AM

Tags for this Thread

Bookmarks

Quuyền Hạn Của Bạn

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể chỉnh sửa bài viết
  •