ขึ้นอยู่กับฟังก์ชันการเข้ารหัสที่ใช้ $i$-times ให้กับอินพุตที่กำหนดสามารถคำนวณได้ในคลาสความซับซ้อนที่แตกต่างกัน (ขึ้นอยู่กับขนาดอินพุต)
$$f^i(m_0) = c_i$$
ตัวอย่างเช่นสำหรับ block-cipher ส่วนใหญ่จะต้องใช้ (แม้จะรู้รหัสลับ) $i$ เท่าของเวลาที่ใช้เพียงครั้งเดียว (อย่างน้อยเท่าที่ฉันรู้) เหมือนกันสำหรับ $i$ ก้าวถอยหลัง หา $m_0$ สำหรับ $c_i$ ยังใช้เวลาประมาณ $i$ คูณเวลาเป็นการดำเนินการเดียว (ไม่ต้องสนใจการปรับแต่งเล็กน้อยที่นี่)
การคำนวณกำลังของตัวเลข/ตัวกำเนิด เช่น สำหรับ Elliptic curves หรือ RSA ใช้เวลาเพียงประมาณ $\log_2(i)$ ครั้ง เวลาที่ใช้การคูณครั้งเดียว (วงเวียน) เหมือนกันสำหรับ $i$ ก้าวถอยหลัง หา $m_0$ สำหรับ $c_i$ ใช้เวลาเพียงประมาณ $\sqrt{N}$ ขั้นตอน (หรือเร็วกว่านั้น) (ด้วย $N$ ขนาดโดเมนของ $ม, ค$). ดังนั้นสิ่งนี้จะไม่ทำงาน
คำถาม: นอกจาก block-cipher แล้ว ยังมีวิธีการเข้ารหัสอื่นๆ อีก ได้แก่:
- $ฉ^i(ม)$ ใช้เวลา $i$ ครั้ง เวลาของ $ฉ^1(ม)$
- $f^{-i}(ค)$ ใช้เวลา $i$ ครั้ง เวลาของ $f^{-1}(ค)$
- $f^{-1}(ค)$ เวลาคำนวณใกล้เคียงกัน $ฉ^1(ม)$
- คอมพิวเตอร์ $i$ สำหรับ $m_0$ และ $c_i$ ใช้เวลาประมาณ $N$ ขั้นตอนการคำนวณหรือแย่กว่านั้นด้วย $N$ ขนาดโดเมนของ $ม,ค$
(ค่าคงที่หรืออะไรทำนองนั้น $\frac{1}{log{N}} N$ ยังสบายดีอยู่ แค่ไม่ $N^p$ กับ $p<0.9$)
- (หากมีความลับบางอย่างที่จำเป็นในการคำนวณ $f,f^{-1}$ (เช่นคีย์สำหรับรหัสบล็อก) ปัจจัย $i$ ไม่ควรเล็กลงหากความลับนี้รู้ถึงฝ่ายตรงข้าม)
- ($f,f^{-1}$ ไม่มีวิธีการเดรัจฉานเช่น block-chain)