Đừng dựa vào số tiền MD5.
Các khoản tiền MD5 không phải là một cách đáng tin cậy để kiểm tra các bản sao, chúng chỉ là một cách để kiểm tra sự khác biệt.
Sử dụng MD5 để tìm các bản sao ứng cử viên có thể , và sau đó cho mỗi cặp chia sẻ MD5
- Mở cả hai tập tin
- Tìm kiếm chuyển tiếp trong các tập tin cho đến khi một khác nhau.
Thấy tôi bị hạ thấp bởi những người thực hiện các cách tiếp cận ngây thơ để gửi bản sao Nhận dạng, nếu bạn hoàn toàn dựa vào thuật toán băm, vì lợi ích, hãy sử dụng một cái gì đó khó khăn hơn như SHA256 hoặc SHA512, ít nhất là bạn sẽ giảm xác suất một mức độ hợp lý bằng cách kiểm tra nhiều bit hơn. MD5 cực kỳ yếu cho các điều kiện va chạm.
Tôi cũng khuyên mọi người đọc danh sách gửi thư ở đây có tiêu đề 'kiểm tra tệp': http://london.pm.org/pipermail/london.pm/Week-of-Mon-20080714/thread.html
Nếu bạn nói "MD5 có thể xác định duy nhất tất cả các tệp duy nhất" thì bạn có lỗi logic.
Với một loạt các giá trị, độ dài dao động từ 40.000 byte chiều dài tới 100.000.000.000 byte chiều dài, tổng số kết hợp sẵn cho phạm vi đó đáng kể vượt quá số có thể có của các giá trị thể hiện bằng MD5, nặng vỏn vẹn 128 bit có độ dài.
Đại diện cho 2 ^ 100.000.000 kết hợp chỉ với 2 ^ 128 kết hợp? Tôi không nghĩ rằng có khả năng.
Cách ít nhất ngây thơ
Cách ít ngây thơ nhất và cách nhanh nhất để loại bỏ các bản sao như sau.
- Theo kích thước : Các tệp có kích thước khác nhau không thể giống hệt nhau. Điều này mất ít thời gian vì nó thậm chí không phải mở tệp.
- Theo MD5 : Các tệp có giá trị MD5 / Sha khác nhau không thể giống hệt nhau. Điều này mất nhiều thời gian hơn một chút vì nó phải đọc tất cả các byte trong tệp và thực hiện phép toán trên chúng, nhưng nó làm cho nhiều so sánh nhanh hơn.
- Không có sự khác biệt ở trên : Thực hiện so sánh từng byte của các tệp. Đây là một thử nghiệm chậm để thực hiện, đó là lý do tại sao nó được để lại cho đến khi tất cả các yếu tố loại trừ khác đã được xem xét.
Fdupes làm điều này. Và bạn nên sử dụng phần mềm sử dụng cùng tiêu chí.