วิธีที่ง่ายที่สุดในการทำเช่นนี้สำหรับ $2r$ รหัสกลมคือการแบ่งกุญแจออกเป็นสองส่วนและวางฐานที่หนึ่ง $r$ คีย์ย่อยในหนึ่งครึ่งและวินาที $r$ คีย์ย่อยในอีกครึ่งหนึ่ง
ETA 20220416: ดังนั้นสำหรับรหัสบล็อกที่มีฟังก์ชันแบบกลม $F(x,k)$ และคีย์ย่อย $k_1,\ldots, k_{2r}$, ป้อนข้อมูล $p$ และออก $ค$ เรามี
$$c=F(F(F(F(\cdots F(F(p,k_1),k_2)\cdots),k_{2r-2}),k_{2r-1}),k_{2r}) $$
ซึ่งจัดเรียงใหม่เป็น
$$F^{-1}(F^{-1}(F^{-1}(\cdots F^{-1}(c,k_{2r})\cdots,k_{r+2}), k_{r+1})=F(F(F(F(\cdots F(F(p,k_1),k_2)\cdots),k_{r-2}),k_{r-1}),k_ {ร}).$$
ให้กำมือที่ตรงกัน $p$ และ $ค$ ค่า (หนึ่งคู่ก็เพียงพอแล้วหากขนาดคีย์เท่ากันกับขนาดบล็อก) การเรียกใช้ความเป็นไปได้ทั้งหมดสำหรับครึ่งแรกของคีย์ก็เพียงพอที่จะสร้างความเป็นไปได้ทั้งหมดสำหรับแต่ละค่าด้านขวามือสำหรับแต่ละค่าของ $p$. เราสามารถสร้างรายชื่อด้านขวามือที่เป็นไปได้เหล่านี้ ในทำนองเดียวกันให้ $ค$ การวิ่งผ่านความเป็นไปได้ทั้งหมดสำหรับคีย์ครึ่งหลังก็เพียงพอแล้วที่จะสร้างความเป็นไปได้ทั้งหมดสำหรับฝั่งซ้าย และสำหรับแต่ละฝั่งซ้ายที่เป็นไปได้ เราจะตรวจสอบเพื่อดูว่ามันปรากฏในฝั่งขวาหรือไม่ หากเราพบการจับคู่ มีความเป็นไปได้สูงที่ครึ่งแรกและครึ่งหลังของคีย์ที่สอดคล้องกันจะเป็นครึ่งที่แท้จริงของคีย์ที่ต้องการ