Nó có thể là một vấn đề lớn trong trường hợp của bạn vì có một xung đột tiền tố giống hệt nhau trong MD5;
|tiền tố giống hệt nhau | phần miễn phí của tệp A | hậu tố giống hệt nhau |
|tiền tố giống hệt nhau | phần miễn phí của tập tin B | hậu tố giống hệt nhau |
^
họ có va chạm ở đây | Phần còn lại là như nhau
Mặc dù ngày nay, việc phát hiện xung đột cho MD5 rất dễ dàng, nơi kẻ tấn công có thể kiểm soát khối trung gian của MD5, xác suất xảy ra điều này có thể giảm đi nếu các tệp không phải là tùy ý vì nó sẽ cung cấp cho cuộc tấn công ít ứng viên có khả năng xảy ra xung đột hơn.
Trong trường hợp của bạn, không có kẻ tấn công và bạn đang tìm kiếm sự va chạm không kiểm soát. Trong VCS, các tệp có nhiều chỉnh sửa có thể rơi vào nhóm các tình huống xung đột có thể xảy ra, cùng một tiền tố, một số phần đã thay đổi và hậu tố giống hệt nhau. Vấn đề chính của bạn sẽ là xác định phần nào cần kiểm tra; chỉ khối thứ hai ( MD5 có các khối 512 bit) hoặc chỉ khối thứ ba hoặc khối thứ hai và thứ ba...
Tại sao phải bận tâm với MD5 và kiểm tra thứ cấp trong khi chúng tôi có thể có các lựa chọn thay thế tốt hơn và nhanh hơn.
- BLACK2 là nhanh nhất xung quanh bây giờ có BLACK3 mà thậm chí còn nhanh hơn. BLAKE2 ~2 lần và BLAKE3 nhanh hơn ~9 lần so với MD5. Sử dụng BLAKE2/3 với đầu ra 512-bit và có một $2^{256}$- thời gian chống va chạm; vì vậy việc tạo ra một vụ va chạm là không khả thi về mặt tính toán.
- SHA-512 gần như có cùng tốc độ với MD5 và nó có thể đảm bảo khả năng chống va chạm tốt hơn nhiều mà MD5 không thể sánh bằng.
Các kết luận của Corkami;
Giết MD5!
Trừ khi bạn chủ động kiểm tra các khối dị dạng hoặc xung đột trong tệp, đừng sử dụng MD5!
Nó không phải là hàm băm mật mã, nó là một chức năng đồ chơi!