Folosind notația din linkul dvs. Wikipedia pentru consecvență, având în vedere orice verificator, eventual înșelat $V^*$, doriți să construiți un simulator $S$ care, având acces numai la reziduul pătratic $v$ (dar nu rădăcina pătrată $s$), produce o ieșire care nu se poate distinge din punctul de vedere al verificatorului în interacțiunea acestuia cu un doveditor onest.
Modul în care faceți acest lucru în acest caz este practic să ghiciți bitul $e$ verificatorul va trimite. Eșantionați uniform unele aleatorii $y\in(\mathbb{Z}/N\mathbb{Z})^*$, precum și $e'\în\{0,1\}$, și setați $r=y^2\cdot v^{-e'}$. În ambele cazuri, $r$ este un reziduu pătratic inversabil uniform aleatoriu, deci distribuția lui $V^*(r)$ nu poate depinde de bit $e'$, prin urmare, $e=e'$ se întâmplă exact cu probabilitate $1/2$ indiferent de strategia de $V^*$. Dacă se întâmplă să fie egale, simulatorul iese $(r,y)$ și altfel repornește (sau se anulează, în funcție de definiția dvs. precisă a zero-cunoștințe; nu contează).
În caz de succes, $(r,y)$ este distribuit exact ca în interacțiunea cu un doveditor onest: $r$ este uniformă în $QR_N$, $y$ este uniformă în $(\mathbb{Z}/N\mathbb{Z})^*$, și mulțumesc $y^2 = r\cdot v^e$. Mai mult, succesul este obținut cu o probabilitate covârșitoare după cel mult polinomial multe repetări (în mărimea $N$). Acest lucru asigură că protocolul este perfect zero-cunoaștere.