Lấy một chuỗi các bộ đệm byte, băm từng bộ đệm, diễn giải các bản tóm tắt băm dưới dạng ma trận vuông với các phần tử int không dấu 8 bit và (ma trận) nhân chúng theo thứ tự. Xác định ma trận cuối cùng là "băm" của danh sách các phần tử.
Định nghĩa này có một số thuộc tính hữu ích. Cụ thể, thuộc tính kết hợp của phép nhân ma trận cho phép tính toán hàm băm danh sách của phép nối hai danh sách bằng cách tính toán hàm băm của từng danh sách một cách độc lập và sau đó giảm chúng bằng phép nhân để có được hàm băm danh sách cuối cùng. Điều này hoạt động với bất kỳ phân vùng tùy ý. Tính không giao hoán cung cấp rằng các thứ tự phần tử khác nhau tạo ra một hàm băm khác cho danh sách, như người ta mong đợi đối với một danh sách.
(Tôi khám phá định nghĩa này chi tiết hơn bao gồm các mẫu mã làm việc trong sổ ghi chép jupyter python mà tôi đã xuất bản có tựa đề danh sách đánh dấu. Bạn cũng có thể tự chơi với nó trên Google Colabvà thêm chú thích hypothes.is trên bài đăng để nhận phản hồi chung. Tôi có thể nâng chi tiết từ đó đến câu hỏi này nếu cần.)
Câu hỏi
- Định nghĩa này có chống lại các cuộc tấn công tạo ảnh trước không? Nói cách khác, có thể chọn một chuỗi các phần tử dẫn đến một hàm băm danh sách mục tiêu tùy ý không?
Lưu ý rằng các phần tử phải tồn tại, do đó, phần tử tiêu hóa đi vào danh sách băm có khả năng chống ảnh hưởng trước dựa trên hàm băm cơ bản (mà chúng ta có thể giả sử nắm giữ trong phạm vi của câu hỏi này). Vì vậy, câu hỏi thực sự trở thành: Có thể sử dụng thứ tự hoặc sự hiện diện của các thông báo băm này để thay đổi tùy ý nội dung của ma trận cuối cùng không? Ví dụ: bạn có thể tạo một chuỗi các phần tử tạo ra hàm băm danh sách là ma trận không không? (Trúng một ma trận bằng không có nghĩa là trò chơi kết thúc, thất bại.)
Tôi đã thực hiện một số tìm kiếm và không tìm thấy câu trả lời cho bất kỳ câu hỏi nào trong số này, mặc dù tôi nghi ngờ rằng điều đó có thể là do tôi không biết về thuật ngữ chính xác cũng như việc không tồn tại câu trả lời.