การใช้แผ่นซ้ำเพียงครั้งเดียวเผยให้เห็นความแตกต่างของข้อความธรรมดาเนื่องจากความเป็นเส้นตรง:
$$c_1 = m_1 \oplus k,~~~~ c_2 = m_2 \oplus k,~~~~ c_1 \oplus c_2 = m_1 \oplus m_2.$$
รหัสบล็อกที่ดี (ขึ้นอยู่กับ Feistel Networks หรือ SPN หรืออย่างอื่น) ในทางกลับกัน ช่วยลดข้อมูลที่รั่วไหลโดยตรงจากการใช้คีย์ซ้ำ: ถ้า $c_1 = E_k(m_1), c_2 = E_k(m_2)$แล้วให้ $c_1$ และ $c_2$ เราสามารถสรุปได้ว่า $m_1$ และ $m_2$ เท่ากันหรือไม่ ( โดยตรวจสอบว่า $c_1$ และ $c_2$ เท่ากันหรือไม่)
ประการแรก สิ่งนี้ยังไม่เพียงพอสำหรับข้อกำหนดการเข้ารหัสสมัยใหม่: การเข้ารหัสดังกล่าวยังถือว่าไม่ปลอดภัย เนื่องจากยังทำให้ข้อมูลเกี่ยวกับข้อความรั่วไหลได้
อย่างไรก็ตาม ด้วยการใช้โหมดบล็อกรหัสที่เหมาะสม (เช่น CBC, CTR) เราสามารถสุ่มอินพุตไปยังรหัสบล็อกได้ ดังนั้น แม้ว่าข้อความจะเหมือนกัน อินพุตและเอาต์พุตของรหัสบล็อกก็จะแตกต่างกัน ( มีความเป็นไปได้สูงมาก) ด้วยวิธีนี้ ผู้โจมตีจะไม่สามารถบอกได้ว่าข้อความนั้นเท่ากันหรือไม่ เพียงแค่ได้รับจากไซเฟอร์เท็กซ์
UPD: เพื่อขับเคลื่อนประเด็นกลับบ้าน มันไม่เกี่ยวกับฟังก์ชัน Feistel ที่ไม่สามารถย้อนกลับได้ $F$ ตัวเอง: มันสามารถกลับด้านได้และ FN จะยังคงปลอดภัย (อาจจะเพิ่มอีกสองสามรอบ) อันที่จริง คุณไม่จำเป็นต้องกลับด้านด้วยซ้ำ $F$ เพื่อถอดรหัสบล็อก ความยากในการทำลายมันคือมีการใช้รหัสลับที่ไม่รู้จักในลักษณะที่ไม่เชิงเส้นที่ซับซ้อน ทำให้การแยกความสัมพันธ์ที่มีความหมายระหว่างบล็อกข้อความธรรมดา/ข้อความเข้ารหัสทำได้ยากมาก (ตรงกันข้ามกับแพดแบบหลายเวลา ซึ่งความสัมพันธ์เป็นแบบเส้นตรงและเรียบง่าย)