Đây là một cách khả thi để thực hiện băm mật mã lặp nhanh gấp đôi so với cách thông thường.
Đưa ra một chức năng nén $f: \{0,1\}^{a+b} \rightarrow \{0,1\}^b$. Giả sử tin nhắn có độ dài $4a$ bit sau khi đệm. Thông thường, bốn khối thông báo được đưa lần lượt vào khối dữ liệu $x_i \in \{0,1\}^b$:
$$
m = m_0 \| m_1 \| m_2 \| m_3; \; |m_i| = một
$$
$$
x_{i+1} = f(x_i \| m_i); \; i=0,1,2,3; \; x_0 = IV
$$
$$
h = x_4
$$
Ý tưởng đầu tiên để băm nhanh hơn là đơn giản hóa chức năng nén, e. g. thay thế $f$ bởi một chức năng $g$ được xây dựng tương tự nhưng chỉ sử dụng $\frac 1 4$ của các vòng trong. tính toán $x_4$ như trên với việc sử dụng $g$ thay vì $f$ và hoàn thiện bằng $h=p(x_4)$, ở đâu $p$ là một hàm giả ngẫu nhiên không cho phép tính toán $x_4$ từ hàm băm $h$.
Tôi cho rằng điều này có thể an toàn trước các cuộc tấn công tạo ảnh trước chứ không phải tấn công va chạm, bởi vì có quá nhiều mối tương quan giữa $x_i$ và $x_{i+1}$, cho phép xây dựng các khối tin nhắn $m_i, \overline m_i, m_{i+1}, \overline m_{i+1}$ để có thể
$$g(g(x_i\|m_i)\|m_{i+1})=g(g(x_i\|\overline m_i)\|\overline m_{i+1})$$
Ý tưởng bây giờ là chèn mỗi khối tin nhắn hai lần:
$$
x_{i+1} = g(x_i \| m_{i \bmod 4}); \; i=0,...,7
$$
$$
h = x_8
$$
Bây giờ có ít nhất năm cuộc gọi đến $g$ giữa các lần tiêm của hai khối khác nhau $m_i, m_j$. Ví dụ $m_2$ được băm khi $i=2$ và $m_3$ khi nào $i=7$, do đó không nên có mối tương quan có thể khai thác giữa $x_2$ và $x_7$. Tuy nhiên, lược đồ này chỉ sử dụng $\frac 1 2$ tổng số vòng, so với phương pháp thông thường.
Điều này có an toàn không, với số tròn $f$ chỉ đủ để làm cho phương pháp thông thường an toàn?