มีวิธีการเข้ารหัสใดบ้าง $f,g,h$ ซึ่งสามารถนำไปใช้ในการสั่งซื้อใด ๆ กับอินพุต $x$ โดยที่ยังคงให้ผลลัพธ์เหมือนเดิม $r$:
$$f(g(h(x)))=h(g(f(x)))=ghf(x)=fhg(x)=hfg(x)=gfh(x) = r$$
เหมือนกันสำหรับฟังก์ชันผกผัน:
$$f^{-1}(g^{-1}(h^{-1}(r)))=h^{-1}(g^{-1}(f^{-1}(r )))=g^{-1}(h^{-1}(f^{-1}(r))) =...= x$$
ถ้าตอนนี้ $f,g,h,$ นำไปใช้ $i,j,k$- ครั้งในการป้อนข้อมูล $x$ ค้นหา/คำนวณ $x$ สำหรับ $ค$
$$c=f^i(g^j(h^k(x)))$$
ควรจะหนักที่สุดเท่าที่จะเป็นไปได้และใช้เวลามากกว่านี้ $O(|i|+|j|+|k|)$ ขั้นตอน
คอมพิวเตอร์ $f,g,h$ และการผกผันต้องใช้เวลาใกล้เคียงกันสำหรับแต่ละอินพุต (ไม่ขึ้นกับ $i,j,k$).
นอกจากนี้ $f,g,h$ ทำให้เกิดเป็นวัฏจักรเช่น $f(f(....f(x)...)) = x$ ด้วยขนาด $F,G,H$ กับ $F\ประมาณ G \ประมาณ H \gg 1$
และสุ่ม $x$ สามารถสร้างได้โดยปราศจากความรู้เกี่ยวกับพารามิเตอร์ลับจาก $f,g,h$.
เป้าหมาย: สุ่มให้สองครั้ง $x_1,x_2$ กับ $x_2=f^ig^jh^k(x_1)$ คำนวณ/หา $i,j,k$ ควรจะยากที่สุดเท่าที่จะเป็นไปได้ในขณะที่จำนวนที่แตกต่างกัน $x$ ควรมีขนาดเล็กที่สุด
ไม่ชอบ แต่บางชุดของ $x_1,x_2$ อาจไม่มีก็ได้ $i,j,k$