Trước hết, các xung đột hàm băm mật mã không được tìm thấy bằng cách tìm kiếm hoặc tình cờ. Chúng được tính toán bởi vì - vì lý do nào đó - thuật toán băm bị hỏng. Bạn vẫn phải tạo khoảng $2^{128}$ băm để tìm ra xung đột, ngay cả khi bạn lấy ngày sinh nhật - và hãy nhớ rằng bạn cũng phải thực hiện so sánh, mặc dù có các thủ thuật để tăng tốc độ đó.
Thay vào đó, nhóm thực hiện phân tích sẽ tìm ra điểm yếu và khai thác nó, đôi khi đòi hỏi rất nhiều nguồn lực. Điều này cũng có nghĩa là nếu bạn tạo ra một va chạm mà bạn có khả năng tạo ra nhiều va chạm hơn bằng cách sử dụng cùng một phương pháp.
Nếu một lượng tương đối nhỏ các trạng thái bên trong bị ảnh hưởng thì nó có thể có thể sửa hàm băm - chẳng hạn như SHA-1 cứng được bảo vệ chống lại cuộc tấn công SHAttered. Tất nhiên, bây giờ SHA-1 được chứng minh là yếu, có rất nhiều lý do để chuyển sang ví dụ: SHA-256 dù sao đi nữa và tôi chưa thấy sự hấp thụ của SHA-1 cứng ở bất cứ đâu.
Ngay cả khi bạn chỉ có hai đầu vào tạo ra cùng một giá trị băm, bạn vẫn có thể gặp rắc rối. Băm hoạt động nội bộ theo từng khối. Nếu có thể tìm thấy một vụ va chạm thì các khối tiếp theo cũng sẽ dễ bị tổn thương. Nói cách khác, nếu bạn tìm thấy $H'(B_1) = H'(B_2)$ sau đó $H'(B_1 \| E) = H'(B_2 \| E)$ ở đâu $\|$ là phép nối. Lưu ý rằng phần mở rộng $E$ có thể chứa không tí nào dữ liệu. Vì vậy, theo nghĩa đó: nếu bạn tìm thấy một xung đột cho SHA-256 thì bạn đã tìm thấy nhiều xung đột của các thông báo bắt đầu bằng một hoặc nhiều khối dữ liệu cụ thể.
Đối với SHA-3, tình huống phức tạp hơn một chút (tùy thuộc vào trạng thái bên trong - tức là khả năng của miếng bọt biển đã sử dụng - giống hệt nhau trước hoặc sau thao tác cuối cùng) nhưng về cơ bản, bạn vẫn gặp rắc rối.
Nếu những loại xung đột này có thể áp dụng cho giao thức của bạn thì lại là một câu hỏi khác. Các lược đồ như HMAC dựa trên hàm băm hoàn toàn không bị ảnh hưởng vì nó không yêu cầu khả năng chống va chạm từ hàm băm đã định cấu hình.