สมมติว่ามีฟังก์ชันแฮชที่ป้องกันการชนกันสองฟังก์ชัน $h_1$ และ $h_2$ ด้วยขนาดเอาต์พุตของ $n_1$ และ $n_2$ ตามลำดับ
เป็น $H'(x) = h_1(h_2(x))$ ทนต่อการชนกันสำหรับความสัมพันธ์ที่แตกต่างกันระหว่าง $n_1$ และ $n_2$?
สิ่งนี้ทำให้ฉันและเพื่อนร่วมงานสับสนในช่วงสองสามวันที่ผ่านมา เนื่องจากสองแนวทางที่แตกต่างกันขัดแย้งกัน:
วิธีที่ 1:
ตามคำจำกัดความของความต้านทานการชน $H'$ มีเอาต์พุตของ $n_1$ ความยาวและดังนั้นหากเราพบการโจมตีที่มีความซับซ้อนน้อยกว่า $\mathcal O(2^{n_1/2})$ มันไม่ทนต่อการชน
พวกเราต้องการ $$\mathcal O(2^{n_2/2}) < \mathcal O(2^{n_1/2}) \implies \ldots \implies n_2 < n_1$$
ดังนั้นหาก $n_2 < n_1, H'$ ไม่ทนต่อการชน และในกรณีอื่นๆ
วิธีที่ 2:
สมมติว่า $H'$ ไม่ทนต่อการชน
แล้วมีอยู่แตกต่างกัน $x_1$ และ $x_2$ ดังนั้น $H'(x_1) = H'(x_2)$ เช่น.
$h_1(h_2(x_1)) = h_1(h_2(x_2))$
ที่สามารถเกิดขึ้นได้หาก $h_2(x_1) = h_2(x_2)$, แต่ $h_2$ มีความทนทานต่อการชน
นอกจากนี้ยังสามารถเกิดขึ้นได้หาก $h_1(A) = h_1(B)$ ที่ไหน $A = h_2(x_1)$ และ $B = h_2(x_2)$ แต่ $h_1$ มีความทนทานต่อการชน
เราได้พิสูจน์แล้วว่า $H'$ มีความทนทานต่อการชนและความสัมพันธ์ของ $n_1$ และ $n_2$ ไม่เป็นไร