Làm thế nào duy nhất là tổng kiểm tra?


10

Tôi có rất nhiều tập tin tôi cần sắp xếp; và thật đáng buồn là có nhiều tệp có cùng tên nhưng nội dung khác nhau và có cùng nội dung với tên tệp khác nhau.

Tôi đang suy nghĩ về việc sử dụng md5sumđể tạo tổng kiểm tra cho các tệp, nhưng tôi cần biết - có thể hai tệp khác nhau (nghĩa là nội dung khác nhau) sẽ tạo ra cùng một tổng kiểm tra không?

Nếu có, nó có khả năng xảy ra như thế nào?

Có thể sử dụng hai chương trình tổng kiểm tra không liên quan (nghĩa là không trong cùng một "gia đình") để tạo hai tổng kiểm tra - theo giả định rằng trong khi hai tệp khác nhau có thể tạo cùng một tổng kiểm tra cho một trong hai chương trình tổng kiểm tra, nó sẽ không bao giờ xảy ra với cả hai cùng một lúc?


2
Hãy nhớ md5 / sha2 / etc là một HASH dữ liệu do đó ánh xạ rất nhiều bit thông tin vào một không gian bit nhỏ hơn, do đó có thể có sự va chạm. HASH không phải là một khóa duy nhất và nếu đó là mục tiêu của bạn ... Tôi thực sự khuyên bạn nên làm điều gì đó khác.
mdpc

Để sắp xếp các tệp, MD5 là tốt. Từ crypto.stackexchange.com/a/18337/49945 , xác suất va chạm tổng kiểm tra của hai nội dung khác nhau là 1 trên 2 ^ 128, tức là khoảng 1 trên 10 ^ 43. Điều đó thực sự, thực sự hiếm. Nếu bạn thực hiện một so sánh mỗi micro giây, trung bình bạn sẽ bị va chạm một lần trong 10 ^ 20 năm. Chỉ mới ~ 10 ^ 9 năm kể từ Big Bang, do đó, tỷ lệ va chạm xảy ra NGAY CẢ MỘT LẦN THỜI GIAN, với một so sánh mỗi micrô giây từ Big Bang cho đến nay vẫn chỉ là 1 trên 10 ^ 11. Đưa ra một trăm tỷ máy tính đồng thời, chỉ ~ một người sẽ thấy một vụ va chạm.
ToolmakerSteve

... mặc dù không rõ lý do tại sao bạn sẽ sử dụng bất kỳ thuật toán băm nào khi sắp xếp tệp. Nếu có các tệp có cùng tên, chúng phải được nhận dạng theo một số tiêu chí khác; ví dụ: phải có một đường dẫn duy nhất đến tệp hoặc có lẽ là một byte bù trong một số thiết bị lưu trữ? Một trong số đó sẽ là một cách hữu ích hơn để tham chiếu duy nhất vào tệp.
ToolmakerSteve

Câu trả lời:


10

Hai tệp có cùng nội dung nhưng tên tệp khác nhau: ( tệp1tệp2 ):

cat file1
this is a simple file

cat file2
this is a simple file

md5sum file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file2
7de45bf879db49de7e2eacea23e6c165  file2

Hai tệp có nội dung khác nhau nhưng tên tệp giống nhau: ( tệp1tệp1 )

cat file1
this is a simple file
cat file1
this is a simple file with extra contents
md5sum file1 #first file1
7de45bf879db49de7e2eacea23e6c165  file1
md5sum file1 #second file1
c7c8f3fd9ddd7a926c31416a69063e4e  file1

Từ mục wiki ,

Tuy nhiên, rất khó có khả năng hai tệp không giống nhau trong thế giới thực sẽ có cùng hàm băm MD5, trừ khi chúng được tạo riêng để có cùng hàm băm.

Nhưng, thuật toán MD5 có những sai sót của riêng nó.

Tuy nhiên, bây giờ rất dễ tạo ra xung đột MD5, người tạo tệp có thể tạo tệp thứ hai có cùng tổng kiểm tra, vì vậy kỹ thuật này không thể bảo vệ chống lại một số hình thức giả mạo độc hại. Ngoài ra, trong một số trường hợp, tổng kiểm tra không thể tin cậy được (ví dụ: nếu nó được lấy trên cùng một kênh với tệp đã tải xuống), trong trường hợp đó MD5 chỉ có thể cung cấp chức năng kiểm tra lỗi: nó sẽ nhận ra tải xuống bị hỏng hoặc không đầy đủ, mà trở nên có khả năng hơn khi tải xuống các tập tin lớn hơn.

Tôi khuyên bạn nên sử dụng sha1 để tính toán tổng kiểm tra vì việc tạo va chạm không dễ dàng khi sử dụng thuật toán sha1 . Sản xuất tổng kiểm tra sha1 khá dễ dàng như bạn có thể thấy ở đây .


LƯU Ý: câu hỏi là về sắp xếp các tập tin; khuyến nghị sử dụng sha1không liên quan đến nhiệm vụ đó; nó chỉ quan trọng khi quan tâm đến an ninh .
ToolmakerSteve
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.